System for determining critical on-times for fuel injectors

ABSTRACT

A fuel system has a source of fuel coupled to a plurality of fuel injectors via a fuel rail. The system is operable to determining a critical on-time for a selected one of the injectors by disabling fuel flow from the source of fuel to the fuel rail, periodically sampling fuel rail pressure, activating the selected injector for an on-time duration while inhibiting injection by remaining ones of the injectors, determining from the fuel rail pressure samples a pressure drop resulting from activation of the selected injector for the on-time duration, processing the pressure drop to determine whether or not the selected injector injected fuel, and repeatedly modifying the on-time duration followed by executing the sampling, activating, determining and processing steps until a critical on-time is determined that corresponds to a minimum on-time duration to which the selected fuel injector is responsive to inject a discernable amount of fuel.

FIELD OF THE INVENTION

The present invention relates generally to electronically controlledfuel systems for internal combustion engines, and more specifically tosystems for determining critical on-times associated with fuel injectorsfor internal combustion engines.

BACKGROUND

Electronically controlled fuel systems for internal combustion enginestypically include one or more fuel injectors responsive to one or morecorresponding activation signals to inject fuel into the engine. It isdesirable to monitor injected fuel quantities in order to evaluate, atleast in part, operation of the one or more fuel injectors.

SUMMARY

The present invention may comprise one or more of the features recitedin the attached claims, and/or one or more of the following features andcombinations thereof. A method of determining a critical on-time for aselected one of a plurality of fuel injectors coupled to a source offuel via a fuel rail of a fuel system for an internal combustion enginemay comprise disabling fuel flow from the source of fuel to the fuelrail, periodically sampling fuel rail pressure, activating the selectedfuel injector for an on-time duration while inhibiting fuel injection byremaining ones of the plurality of fuel injectors, determining from thefuel rail pressure samples a first pressure drop in the fuel railresulting from activation of the selected fuel injector for the on-timeduration, processing the first pressure drop to determine whether or notthe selected fuel injector injected fuel into the engine in response toactivation for the on-time duration, repeatedly modifying the on-timeduration and then executing the periodically sampling, activating,determining and processing steps until a critical on-time is determinedthat corresponds to a minimum on-time duration to which the selectedfuel injector is responsive to inject a discernable amount of fuel intothe engine.

The method may further comprise storing the critical on-time for theselected fuel injector in a memory unit.

Periodically sampling, activating, determining, processing andrepeatedly modifying may be carried out for remaining ones of theplurality of fuel injectors to determine a critical on-time for each ofthe remaining ones of the plurality of fuel injectors.

The on-time duration may be initially selected such that activation ofthe selected fuel injector for the on-time duration does not result ininjection of any discernable amount of fuel into the engine. Repeatedlymodifying the on-time duration may then comprise successivelyincrementing the on-time duration by an increment value. Alternatively,the on-time duration may be initially selected such that activation ofthe selected fuel injector for the on-time duration results in injectionof fuel into the engine. Repeatedly modifying the on-time duration maythen comprise successively decrementing the on-time duration by adecrement value. Alternatively still, repeatedly modifying the on-timeduration may comprise selecting on-time durations on either side of anexpected critical on-time for the selected injector and thenincrementally advancing the on-time duration toward the expectedcritical on-time until the minimum on-time duration is determined.

Each execution of the periodically sampling, activating, determining andprocessing steps may be carried out over a single engine cycle.

The method may further comprise determining from the fuel rail pressuresamples a second pressure drop in the fuel rail pressure resulting fromleakage of fuel by the fuel system when none of the plurality of fuelinjectors is injecting fuel into the engine, and determining from thefuel pressure samples a mean value of the fuel pressure samples.Processing the first pressure drop may further comprise processing thefirst pressure drop, the second pressure drop and the mean value of thefuel pressure samples to determine whether or not the selected fuelinjector injected fuel into the engine in response to activation of theselected fuel injector for the on-time duration. The processing step maycomprise processing the first pressure drop, the second pressure dropand the mean value of the fuel pressure using a first discriminantfunction to produce an inject value corresponding to a likelihood thatthe activation of the selected fuel injector for the on-time durationresulted in injection of fuel by the selected fuel injector into theengine, processing the first pressure drop, the second pressure drop andthe mean value of the fuel pressure using a second discriminant functionto produce an inject-not value corresponding to a likelihood that theactivation of the selected fuel injector for the on-time durationresulted in no injection of fuel by the selected fuel injector into theengine, and processing the inject and inject not values to produce aninject/no-inject value, the inject/no-inject value having a valueindicating that the selected fuel injector injected fuel into the enginein response to activation of the selected fuel injector for the on-timeduration if the inject value is greater than the inject-not value, andotherwise having a value indicating that the selected fuel injector didnot inject fuel into the engine in response to activation of theselected fuel injector for the on-time duration. Each execution of thesteps of periodically sampling, activating, determining the firstpressure drop, determining the second pressure drop, determining themean value of the fuel pressure, processing the first pressure drop,processing the second pressure drop and processing the inject and injectnot values may be carried out over a single engine cycle. The method mayfurther comprise processing a number of inject/no-inject values producedover a corresponding number of engine cycles to according to a votingprocess to determine whether or not the selected fuel injector injectedfuel into the engine in response to activation of the selected fuelinjector for the on-time duration.

Processing the number of inject/no-inject values may comprisedetermining a vote number corresponding to a number of times over thenumber of engine cycles that the inject/no-inject value indicates thatthe selected fuel injector injected fuel into the engine in response toactivation of the selected fuel injector for the on-time duration,determining that the selected fuel injector injected fuel into theengine in response to activation of the selected fuel injector for theon-time duration if the vote number reaches a pass count value, andotherwise determining that the selected fuel injector did not inject adiscernable amount of fuel into the engine in response to activation ofthe selected fuel injector for the on-time duration. Processing thenumber of inject/no-inject values may alternatively comprise determininga vote number corresponding to a number of times that theinject/no-inject value indicates that the selected fuel injectorinjected fuel into the engine in response to activation of the selectedfuel injector for the on-time duration, determining that the selectedfuel injector injected fuel into the engine in response to activation ofthe selected fuel injector for the on-time duration if the vote numberreaches a pass count value before the number of engine cycles reaches anengine cycle count value, and determining that the selected fuelinjector did not inject a discernable amount of fuel into the engine inresponse to activation of the selected fuel injector for the on-timeduration if the number of engine cycles reaches the engine cycle countvalue before the vote number reaches the pass count value.

The method may further comprise filtering the second pressure drop overtime to produce a filtered parasitic leakage value, comparing thefiltered parasitic leakage value to a leakage threshold value, andstoring an excessive parasitic leakage value, that is indicative of anexcessive parasitic leakage condition, in a memory unit in a memory unitif the filtered parasitic leakage value is greater than the leakagethreshold value.

A system for determining a critical on-time for a selected one of aplurality of fuel injectors in a fuel system for an internal combustionengine may comprise a fuel inlet metering valve having an inlet fluidlycoupled to a source of fuel, a fuel pump having an inlet coupled to anoutlet of the fuel inlet metering valve, a fuel rail coupled to anoutlet of the fuel pump, a pressure sensor fluidly coupled to the fuelrail and configured to produce a pressure signal indicative of fuelpressure within the fuel rail, a plurality of fuel injectors fluidlycoupled to the fuel rail, and a control circuit including a memoryhaving instructions stored therein that are executable by the controlcircuit to control the fuel inlet metering valve to disable fuel flowfrom the source of fuel to the fuel rail, to periodically sample thepressure signal, to activate the selected fuel injector for an on-timeduration while inhibiting fuel injection by remaining ones of theplurality of fuel injectors, to determine from the pressure signalsamples a first pressure drop in the fuel rail resulting from activationof the selected fuel injector for the on-time duration, to process thefirst pressure drop to determine whether or not the selected fuelinjector injected fuel into the engine in response to activation for theon-time duration, and to repeatedly modify the on-time duration and thenexecute the periodically sampling, activating, determining andprocessing steps until a critical on-time is determined that correspondsto a minimum on-time duration to which the selected fuel injector isresponsive to inject a discernable amount of fuel into the engine.

The instructions stored in the memory may further include instructionsthat are executable by the control circuit to determine from thepressure signal samples a second pressure drop in the fuel rail pressureresulting from leakage of fuel by the fuel system when none of theplurality of fuel injectors is injecting fuel into the engine, and todetermine from the pressure signal samples a mean value of the pressuresignal samples. The instructions stored in the memory may furtherinclude instructions that are executable by the control circuit todetermine whether or not the selected fuel injector injected fuel intothe engine in response to activation for the on-time duration byprocessing the first pressure drop, the second pressure drop and themean value of the fuel pressure samples to determine whether or not theselected fuel injector injected fuel into the engine in response toactivation of the selected fuel injector for the on-time duration.

The instructions stored in the memory may further include instructionsthat are executable by the control circuit to determine whether or notthe selected fuel injector injected fuel into the engine in response toactivation for the on-time duration by processing the first pressuredrop, the second pressure drop and the mean value of the fuel pressureusing a first discriminant function to produce an inject valuecorresponding to a likelihood that the activation of the selected fuelinjector for the on-time duration resulted in injection of fuel by theselected fuel injector into the engine, by processing the first pressuredrop, the second pressure drop and the mean value of the fuel pressureusing a second discriminant function to produce an inject-not valuecorresponding to a likelihood that the activation of the selected fuelinjector for the on-time duration resulted in no injection of fuel bythe selected fuel injector into the engine, and by processing the injectand inject not values to produce an inject/no-inject value, theinject/no-inject value having a value indicating that the selected fuelinjector injected fuel into the engine in response to activation of theselected fuel injector for the on-time duration if the inject value isgreater than the inject-not value, and otherwise having a valueindicating that the selected fuel injector did not inject fuel into theengine in response to activation of the selected fuel injector for theon-time duration.

The instructions stored in the memory may be executable by the controlcircuit to produce the inject/no-inject value during a single enginecycle. The instructions stored in the memory may further includeinstructions that are executable by the control circuit to process anumber of inject/no-inject values produced over a corresponding numberof engine cycles to according to a voting process to determine whetheror not the selected fuel injector injected fuel into the engine inresponse to activation of the selected fuel injector for the on-timeduration. The instructions stored in the memory may further includeinstructions that are executable by the control circuit to process thenumber of inject/no-inject values by determining a vote numbercorresponding to a number of times over the number of engine cycles thatthe inject/no-inject value indicates that the selected fuel injectorinjected fuel into the engine in response to activation of the selectedfuel injector for the on-time duration, by determining that the selectedfuel injector injected fuel into the engine in response to activation ofthe selected fuel injector for the on-time duration if the vote numberreaches a pass count value, and by otherwise determining that theselected fuel injector did not inject a discernable amount of fuel intothe engine in response to activation of the selected fuel injector forthe on-time duration.

The instructions stored in the memory may further include instructionsthat are executable by the control circuit to process the number ofinject/no-inject values by determining a vote number corresponding to anumber of times that the inject/no-inject value indicates that theselected fuel injector injected fuel into the engine in response toactivation of the selected fuel injector for the on-time duration, bydetermining that the selected fuel injector injected fuel into theengine in response to activation of the selected fuel injector for theon-time duration if the vote number reaches a pass count value beforethe number of engine cycles reaches an engine cycle count value, and bydetermining that the selected fuel injector did not inject a discernableamount of fuel into the engine in response to activation of the selectedfuel injector for the on-time duration if the number of engine cyclesreaches the engine cycle count value before the vote number reaches thepass count value.

The instructions stored in the memory may further include instructionsthat are executable by the control circuit to store the critical on-timein the memory.

The instructions stored in the memory may further include instructionsthat are executable by the control circuit to determine criticalon-times for remaining ones of the plurality of fuel injectors.

The instructions stored in the memory may further include instructionsthat are executable by the control circuit to determine the criticalon-time using the pressure signal sampled over a single engine cycle.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of one illustrative embodiment of a system formonitoring injected fuel quantities.

FIG. 2 is a block diagram of one illustrative embodiment of controllogic forming part of the control circuit of FIG. 1.

FIG. 3 is a block diagram of one illustrative embodiment of the injectorhealth determination logic block of FIG. 2.

FIGS. 4A and 4B are a flowchart of one illustrative embodiment of themain control logic block of FIG. 3.

FIG. 5 is a plot of rail pressure vs. engine cycles illustratingdecreasing rail pressure due to fuel injection and fuel leakage over anumber of engine cycles under conditions illustrated in FIGS. 4A and 4B.

FIG. 6 is a block diagram of one illustrative embodiment of the fuelinjection determination logic block of FIG. 3.

FIG. 7 is a block diagram of one illustrative embodiment of the railpressure processing logic block of FIG. 6.

FIG. 8 is a plot of rail pressure vs. engine crank angle illustratingoperation of the rail pressure processing logic block of FIG. 7.

FIG. 9 is a block diagram of one illustrative embodiment of theinject/no inject determination logic block of FIG. 6.

FIG. 10 is a plot of injected fuel quantity vs. injector on-time for asingle fuel injector illustrating it's critical on-time.

FIG. 11 is a plot of injected fuel quantity vs. injector on-time for anormally functioning fuel injector and for a failed fuel injectorillustrating corresponding variations in observed critical on-times.

FIG. 12 is a block diagram of another illustrative embodiment of theinjector health determination logic block of FIG. 2.

FIG. 13 is a flowchart of one illustrative embodiment of a portion ofthe main control logic block of FIG. 12.

FIG. 14 is a block diagram of one illustrative embodiment of the fuelinjection determination logic block of FIG. 12.

FIG. 15 is a block diagram of one illustrative embodiment of theinject/no inject voting logic block of FIG. 14.

FIG. 16 is a block diagram of yet another illustrative embodiment of theinjector health determination logic block of FIG. 2.

FIG. 17 is a flowchart of one illustrative embodiment of a portion ofthe main control logic block of FIG. 16.

FIG. 18 is a flowchart of another illustrative embodiment of a portionof the main control logic block of FIG. 16.

FIG. 19 is a flowchart of one illustrative embodiment of a process foradjusting commanded on-times for one or more fuel injectors based on oneor more corresponding critical on-times.

FIG. 20 is a flowchart of one illustrative embodiment of a process foradjusting commanded on-times for one or more fuel injectors based on oneor more corresponding injected fuel quantity estimates.

DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENTS

For the purposes of promoting an understanding of the principles of theinvention, reference will now be made to a number of illustrativeembodiments shown in the attached drawings and specific language will beused to describe the same.

Referring now to FIG. 1, a block diagram of one illustrative embodimentof a system 10 for monitoring injected fuel quantities as shown. In theillustrated embodiment, the system 10 includes a conventional fuelsource 12 that is carried by a vehicle in which the system 10 resides.The fuel source 12 is fluidly coupled via a conduit 14 to an inlet of afuel inlet metering valve 16. A conventional low pressure fuel pump 13is positioned in-line with the conduit 14, and is configured to supplylow pressure fuel to a fuel inlet of the inlet metering valve 16 fromthe source of fuel 12. A fuel outlet of the fuel inlet metering valve 16is fluidly coupled to a fuel inlet of a conventional high pressure fuelpump 18, and a fuel outlet of the fuel pump 18 is fluidly coupled to afuel inlet of a conventional fuel accumulator 20. Illustratively, thefuel pump 18 is a conventional high pressure fuel pump, although thisdisclosure contemplates that other conventional fuel pumps mayalternatively be used. The fuel accumulator 20 is also fluidly coupledvia a number, N, of fuel conduits 22 ₁-22 _(N) to a corresponding numberof conventional fuel injectors 24 ₁-24 _(N), wherein N may be anypositive integer. Each of the fuel injectors 24 ₁-24 _(N) is fluidlycoupled to a different one of the number of fuel conduits 22 ₁-22 _(N),and also to a corresponding number of cylinders 26 ₁-26 _(N) of aninternal combustion engine 28. The fuel accumulator 20 may alternativelybe referred to as a fuel rail, and the terms “accumulator” and “rail”may accordingly be used interchangeably herein. Illustratively, theinternal combustion engine 28 may be a conventional diesel engine, inwhich case the fuel source 12 holds a quantity of conventional dieselfuel. Alternatively, the internal combustion engine 28 may be configuredto combust different types of fuel, e.g., gasoline, gasoline-oil mix, orthe like, in which case the fuel source 12 holds a quantity ofcorresponding fuel.

The system 10 further includes a control circuit 30 having, or havingaccess to, a memory unit 32. Illustratively, the control circuit 30 maybe microprocessor-based, although this disclosure contemplatesembodiments in which the control circuit 30 alternatively includes oneor more other conventional signal processing circuits. In any case, thecontrol circuit 30 is configured to process input signals, and toproduce output control signals in a manner that will be describedhereinafter. In embodiments in which the control circuit 30 ismicroprocessor-based and/or in which the control circuit 30 includesdecision-making circuit generally, the memory unit 32 has stored thereininstructions that are executable by the control circuit 30 to accomplishany one or more of the tasks described herein.

The control circuit 30 includes a number of inputs configured to receiveelectrical signals produced by a number of sensors. One such sensor, forexample, is a conventional pressure sensor 34 that is electricallyconnected to a rail pressure input, RP, of the control circuit via asignal path 36. In the illustrated embodiment, the pressure sensor 34 isconfigured to produce a pressure signal corresponding to the fuelpressure within the fuel accumulator or rail 20. The pressure signalproduced by the pressure sensor 34 will be referred to herein as a railpressure signal that is indicative of a fuel pressure within the fuelaccumulator or rail 20.

The system 10 further includes an engine speed and position sensor 38that is operatively coupled to the internal combustion engine 28 andthat is electrically connected to an engine speed and position input,ES/P of the control circuit 30 via a signal path 40. The engine speedand position sensor 38 is illustratively a conventional sensor that isconfigured to produce a signal from which the rotational speed (e.g.,engine speed, ES) of the engine 28 can be determined and from which theengine position (EP), e.g., the angle of the engine crank shaft (notshown) relative to a reference angle, can be determined.

The control circuit 30 further includes a number of outputs via whichthe control circuit 30 produces control signals for controlling a numberof actuators associated with the system 10. For example, the system 10includes a fuel inlet metering valve 16, as described hereinabove, and afuel inlet valve control output, FIVC, of the control circuit 30 iselectrically connected to the fuel inlet metering valve 16 via a signalpath 42. The control circuit 30 is configured to control operation ofthe fuel inlet metering valve 16 via the FIVC output between an openposition in which fuel may flow from the fuel source 12 to the fuel pump18, and a closed position in which fuel from the fuel source 12 may notflow from the fuel pump 18.

In some embodiments, the system 10 may further include a fuel pumpactuator 45 that is coupled to the fuel pump 18 and that is electricallyconnected to a fuel pump control output, FPC, of the control circuit 30via a signal path 46, as shown by dashed-line representation in FIG. 1.In embodiments that include these components, the fuel pump actuator 46is responsive to fuel pump command signals produced by the controlcircuit 30 on the signal path 46 to control operation of the fuel pump18 in a conventional manner.

In some embodiments, the system 10 may further include a fuel returnconduit 47 having one end that is fluidly coupled to the fuelaccumulator or rail 20 and an opposite end that is fluidly coupled tothe fuel source 12. A pressure relief valve 48 may be positioned in-linewith the fuel return conduit 47 and may be electrically connected to apressure relief valve output, PRV, of the control circuit 30 via asignal path 49, as shown by dashed-line representation in FIG. 1. Inembodiments that include these components, the pressure relief valve 48is responsive to a pressure relief valve control signal produced by thecontrol circuit 30 on the signal path 49 to control operation of thepressure relief valve 48 in a conventional manner.

The control circuit 30 further includes a number, N, of fuel injectorcontrol outputs, FIC₁-FIC_(N), each of which is electrically connectedto a corresponding one of the number of fuel injectors 24 ₁-24 _(N) viaa corresponding one of a number of signal paths 44 ₁-44 _(N). Each ofthe fuel injectors 24 ₁-24 _(N) is responsive to a corresponding controlsignal produced by the control circuit 30 to inject fuel into acorresponding one of the number of cylinders 26 ₁-26 _(N) for aspecified on-time which begins at a specified start-of-injection timing.Illustratively, the start-of-injection timing is specified relative to apredefined engine position, e.g., crank angle, associated with eachcylinder. More specifically, for example, the start-of-injection timingfor each cylinder 26 ₁-26 _(N) may be determined relative to atop-dead-center (TDC) crank angle that is different for each of thenumber of cylinders 26 ₁-26 _(N). It will be understood, however, thatthe start-of-injection timing may be specified using other conventionaltechniques.

Referring now to FIG. 2, one illustrative embodiment of at least some ofthe control logic within the control circuit 30 of the system 10 isshown. Illustratively, the control logic illustrated in FIG. 2 is storedin the memory unit 32 of the control circuit 30 in the form of one ormore sets of instructions, e.g., software code, executable by thecontrol circuit 30 to control operation of the control system 10. In theillustrated embodiment, the control circuit 30 includes an injectorhealth determination logic block 50 and a fueling logic block 52. Theinjector health determination logic block receives as inputs the railpressure signal, RP, produced by the pressure sensor 34, the enginespeed and position signal, ES/P, produced by the speed and positionsensor 38 and a requested fueling value, RQF, from the fueling logicblock 52. The requested fueling value, RQF, is a conventional fuelingvalue that represents user-requested fueling, e.g., via user actuationof a conventional accelerator pedal (not shown) and/or user-setting of aconventional cruise control unit (not shown), which may be furtherlimited or modified by one or more conventional algorithms residentwithin the memory 32 and executed by the control circuit 30. Forpurposes of this document, the requested fuel value, RFQ, generallycorresponds to a request for delivery of fuel by the fuel system to theengine 28. The injector health determination logic block 50 isconfigured to produce output values corresponding to injector on-time,OT, injector identification number, INJ_(K), and a fuel inlet meteringvalve control value, FIVC. Determination of these output values by theinjector health determination logic block 50 will be described ingreater detail hereinafter.

The fueling logic block 52 receives as inputs the rail pressure signal,RP, the engine speed and position signal, ES/P, and the OT, INJ_(K) andFIVC valves produced by the injector health determination logic block50. In addition to the requested fueling value, RQF, the fueling logicblock 52 is configured to produce as outputs the fuel injector controlsignals, FIC₁-FIC_(N), and the fuel inlet metering valve control signal,FIVC, and in some embodiments the fuel pump command signal, FPC, and/orthe pressure relief valve signal, PRV. During the normal operation ofthe internal combustion engine 28, i.e., when the injector healthdetermination logic block is not enabled for operation, the fuelinglogic block 52 is operable in a conventional manner to control thesystem 10 to supply fuel to the various cylinders 26 ₁-26 _(N) of theengine 28. When the injector health determination logic block 50 isenabled for operation, operation of the fueling logic block 52 isconventional with the exception that the fuel injector on-time signalsand the fuel inlet metering inlet valve control signal (and/or the fuelpump command signal and/or the pressure relieve valve signal, inembodiments that include either or both of the fuel pump actuator 45 andthe pressure relief valve 48) are specified by the injector healthdetermination logic block 50 in a manner that will be described ingreater detail hereinafter.

Referring now to FIG. 3, one illustrative embodiment of the injectorhealth determination logic block 50 is shown. In the illustratedembodiment, the injector health determination block 50 includes a maincontrol logic block 54 and a fuel injection determination logic block56. The main control logic block 54 receives as inputs the engine speedand position signal, ES/P, the rail pressure signal, RP, the requestedfueling value, RQF, and inject/no-inject value, I/I′ that is produced bythe fuel injection determination logic block 56. The main control logicblock 54 is operable to produce as outputs the on-time value, OT, theinjector identification value, INJ_(K), and the fuel inlet meteringvalue command value, FIVC. The fuel injection determination logic block56 receives as inputs the engine speed value, ES, which is taken fromthe engine speed and position signal, ES/P, an instantaneous railpressure value, RP_(i), produced by the main control logic block 54, anda corresponding individual tooth number, TOOTH_(i) that is produced bythe main control logic block 54.

Referring now to FIGS. 4A and 4B, a flow chart of one illustrativeembodiment of a software algorithm 54 representing the main controllogic block 54 of FIG. 3 is shown. In the illustrated embodiment, thealgorithm 54 begins at step 70, and thereafter at step 72 the maincontrol logic block 54 is operable to monitor one or more test enableconditions which must be satisfied before the injector healthdetermination logic block 50 of FIG. 2 may be enabled for operation.Illustratively, the test conditions monitored by the main control logicblock 54 at step 72 include monitoring the requested fuel value, RQF,produced by the fueling logic block 52, the rail pressure signal, RP,and the engine speed and position signal, ES/P. Thereafter at step 74,the main control logic block 54 is operable to determine whether thetest conditions monitored at step 72 have been satisfied.Illustratively, the main control logic block 54 is operable at step 74to determine whether the test conditions monitored at step 72 have beensatisfied by determining whether the requested fuel value, RQF,corresponding to a request for fuel delivered by the fuel system to theengine 28, is below a threshold fueling level, F_(TH), e.g.,corresponding to a vehicle motoring condition or zero requested fueling,whether the rail pressure, RP, is above a rail pressure threshold,RP_(TH), and whether the engine speed portion of the engine speed andposition signal, ES/P, is above a speed threshold. If the main controllogic block 54 determines at step 74 that the requested fuel value, RQF,is not less than the threshold fueling level, F_(TH), the rail pressure,RP, is not above the rail pressure threshold, RP_(TH), or the enginespeed is not above engine speed threshold, ES_(TH), execution of thealgorithm 54 looks back to step 72 to continue monitoring the testenable conditions. If, however, the main control logic block 54determines at step 74 that the requested fuel value, RQF, is less thanF_(TH), the rail pressure, RP, is above RP_(TH), and the engine speed,ES, is above ES_(TH), execution of the algorithm 54 advances to step 76.It will be understood that the foregoing test enable conditionsmonitored and tested by the main control logic block 54 at step 72 and74 represent only one set of example test conditions, and that more,fewer and/or different test enable conditions may be monitored andtested at steps 72 and 74. It will be noted that the “YES” branch ofstep 74, in addition to advancing to step 76, also loops back to step72. For purposes of this document, the loop between the “YES” branch ofstep 74 and step 72 indicates that the test enable conditions arecontinually monitored and tested at steps 72 and 74 throughout thealgorithm 54. Thus, if at any time during the execution of the algorithm54, one or more of the test enable conditions described above is notsatisfied, i.e., is no longer true, execution of the algorithm 54 loopsbetween steps 72 and 74 until all such test enable conditions aresatisfied, and the algorithm 54 then restarts at step 76.

At step 76, the main control logic block 54 is operable to determine aKth one of the number of fuel injectors 24 ₁-24 _(N) for testing. Thevalue of K may be selected randomly between 1 and N, or mayalternatively be selected to follow a predetermined sequence ofinjectors, e.g., so as to follow a predetermined fuel injection pattern.In any case, execution of the algorithm 54 advances from step 76 to step78 where the main control logic block 54 is operable to produce a fuelinlet metering valve command, FIVC, that corresponds to a closed inletmetering valve 16, e.g., FIVC equals zero. The main control logic block54 is then operable to produce a fuel inlet metering valve controlsignal on signal path 42 that closes the fuel inlet metering valve 16 sothat no fuel flows from the fuel source 12 to the fuel pump 18. Step 78is included in the algorithm 54 as a mechanism by which fuel flow to thefuel rail (e.g., the accumulator 20 and/or conduit 22) may be disabled.It will be understood that, for purposes of this disclosure, step 78 mayadditionally or alternatively be carried out by configuring the maincontrol logic block 54 to produce a fuel pump command, FPC, thatdeactivates the fuel pump actuator 46, thereby disabling operation ofthe fuel pump 18, and/or by configuring the main control logic block 54to produce a pressure relieve valve signal, PRV, that closes thepressure relief valve 48 to prevent fuel from escaping the fuelaccumulator or rail 20 via the fuel conduit 47, in embodiments thatinclude either the fuel pump actuator 45 and/or the pressure reliefvalve 48 respectively. Modifications to the main control logic block 54to include either feature would be a mechanical step for a skilledartisan.

The algorithm 54 advances from step 78 to step 80 where the injectorhealth determination logic block 50 is operable to monitor the engineposition, EP, that is derived from the engine speed and position signal,ES/P on signal path 40. Thereafter at step 82, the injector healthdetermination logic block 50 is operable to determine whether the engineposition value, EP, indicates that the engine 28 is at the start of anengine cycle.

Illustratively, the start of an engine cycle corresponds to detection ofa specified one of the teeth on a gear or wheel that is rotatingsynchronously with the engine crank shaft, and is different for each ofthe number of cylinders 26 _(i)-26 _(N) and corresponding fuel injectors24 ₁-24 _(N). For example, the start of an engine cycle relative to anyof the number of cylinders 26 _(i)-26 _(N) generally corresponds to theso-called top-dead-center (TDC) position of the corresponding pistonwithin the cylinder. Illustratively, the start of an engine cycle forany of the number of cylinders 26 ₁-26 _(N) corresponds to the TDC ofits corresponding piston, and is identified by the tooth on the engineposition gear or wheel that corresponds to the TDC of the correspondingpiston. The engine cycle, relative to any of the number of cylinders 26_(i)-26 _(N), then corresponds to the amount of rotation of the enginecrank shaft that occurs between adjacent TDC positions of thecorresponding piston. In a conventional six-cylinder engine, forexample, TDCs typically occur every 120 degrees of crank shaft rotation.In any case, a single engine cycle relative to any cylinder/piston istypically 720 degrees of engine crank shaft rotation. Those skilled inthe art will recognize that other techniques and/or piston positions foridentifying the start of an engine cycle for any of the cylinders 26_(i)-26 _(N), and any such other techniques and/or piston positions arecontemplated by this disclosure.

If the injector health determination logic block 50 determines at step82 that the current engine position, EP, is not at the start of anengine cycle, execution of the algorithm 54 loops back to step 80 tocontinue to monitor the engine position, EP. If, at step 82, theinjector health determination logic block 50 determines that the currentengine position, EP, is at the start of an engine cycle, the algorithm54 advances to step 84 where the injector health determination logicblock 50 is operable to produce an on-time value, OT, for injector K,and to provide the on-time value, OT, to the fueling logic block 52. Theon-times for all other injectors are set to zero. The fueling logicblock 52 is operable, in turn, to command the on-time, OT, to the Kthone of the number of injectors 24 ₁-24 _(N) via an appropriate one ofthe signal paths 44 ₁-44 _(N).

Following step 84, execution of the algorithm 54 advances to step 86where the injector health determination logic block 50 is operable tosample the rail pressure, RP, and the engine position, EP, to determinecorresponding sampled rail pressure and engine position values, RP_(i)and EP_(i). Thereafter at step 88, the injector health determinationlogic block 50 is operable to convert EP_(i) to a corresponding toothnumber TOOTH_(i), thereby identifying a particular tooth on the gear orwheel rotating synchronously with the engine crank shaft thatcorresponds to the particular engine position at which the rail pressuresample, RP_(i), was taken. Thereafter at step 90, the injector healthdetermination logic block 50 is operable to provide the rail pressureand tooth samples, RP_(i) and TOOTH_(i), respectively, to the fuelinjection determination logic block 56 (see FIG. 3). Thereafter at step92, the injector health determination logic block 50 is operable todetermine whether the current engine position EP indicates that thecurrent engine cycle is complete. If not, execution of the algorithm 54loops back to step 86 to continue to sample the rail pressure and engineposition RP and EP, respectively, for the remaining duration of thecurrent engine cycle.

If, at step 92, the main control logic block 54 determines from thecurrent engine position, EP, that the current engine cycle is complete,algorithm execution advances to step 94 where the main control logicblock 54 is operable to determine whether the fuel injectiondetermination logic block 56 detected any discernable fuel injection bythe Kth injector resulting from the currently commanded on-time value,OT. Illustratively, the main control logic block 54 is operable toexecute step 94 by monitoring the inject/no-inject value, I/I′ producedby the fuel injection determination logic block 50 in a manner that willbe described in greater detail hereinafter. In any case, if the maincontrol logic block 54 determines at step 94 that the fuel injectiondetermination logic block 56 did not detect any discernable fuelinjection by the Kth injector in response to the currently commandedon-time value, OT, execution of the algorithm 54 advances to step 98where the main control logic block 54 is operable to modify the currenton-time value, OT, e.g., by incrementing OT by an increment value, INC.Illustratively, INC may range between 1-1000 microseconds, e.g., 100microseconds, although other values of INC are contemplated. In anycase, execution of the algorithm 54 loops from step 98 back to step 80to monitor the current engine position value, EP.

If, at step 94, the main control logic block 54 determines that the fuelinjection determination logic block 56 detects a discernable fuelinjection amount by the Kth injector in response to the currentlycommanded on-time, OT, execution of the algorithm 54 advances to step 96where the main control logic block 54 is operable to set a criticalon-time value for the Kth injector, COT_(K), to the currently commandedon-time value, OT, and to store the critical on-time value, COT_(K),along with the injector identifier, K, in the memory unit 32. Thecritical on-time of any of the injectors 24 ₁-24 _(N) is defined forpurposes of this disclosure as a minimum on-time to which the fuelinjector is responsive to inject a discernable quantity of fuel into acorresponding one of the cylinders 26 ₁-26 _(N).

The algorithm 54 advances from step 96 to step 100 where the maincontrol logic block 54 is operable to determine whether critical on-timevalues, COT, have been determined for all of the injectors 24 ₁-24 _(N).If not, the algorithm 54 advances to step 104 where the main controllogic block 54 is operable to select a new injector K from the remainingones of the injector 24 ₁-24 _(N) for which a critical on-time value,COT, has not been determined. From step 104, the algorithm 54 loops backto step 80. If, at step 100, the main control logic block 54 determinesthat critical on-time value, COT, have been determined for all of theinjectors 24 ₁-24 _(N), the algorithm 54 advances to step 102 where themain control logic block 54 is operable to produce a fuel inlet meteringvalve command value, FIVC, that corresponds to an open fuel inletmetering valve 16. The fueling logic block 50 is responsive to the fuelinlet metering valve command value, FIVC, produced by the injectorhealth determination logic block 50 to command the fuel inlet meteringvalve 16 to an open position. Additionally, in embodiments that includethe actuator 45, the control logic block 54 may be operable at step 102to resume producing fuel pump commands, FPC. In embodiments that includethe pressure relief valve 48, the control logic block 54 may be operableat step 102 to resume producing the pressure relief valve signals, PRV,as appropriate. In any case, the algorithm 54 advances from step 102 tostep 106 where execution of the algorithm 54 ends.

One of the purposes of the algorithm 54 is to determine criticalon-times, COT, for each of the injectors 24 ₁-24 _(N). The algorithm 54,in the embodiment illustrated in FIGS. 4A and 4B, illustrativelyaccomplishes this by setting the first on-time value, OT, at step 84 toan on-time value at which no discernable fuel injection is expected tobe detected by the fuel injection determination logic block 56. Thealgorithm 54 proceeds to add incremental time values, INC, to theon-time value, OT, so that eventually the fuel injection determinationlogic block 56 will detect a discernable amount of fuel injection by thecorresponding one of the fuel injectors 24 ₁-24 _(N). It is when thisdiscernable amount of fuel injection is detected that the algorithm 54defines the critical on-time value, COT_(K), for the Kth one of thenumber of fuel injectors 24 ₁-24 _(N). Those skilled in the art willrecognize other conventional techniques for selecting and/or modifyingan initial on-time value, OT, to determine critical on-time values, COT,for each of the injectors 24 ₁-24 _(N). For example, the initial on-timecommand value, OT, at step 80 may be set to an on-time value at which adiscernable amount of injected fuel is expected to be detected by thefuel injection determination logic block 56, and step 98 may then bemodified to decrement the on-time value, OT, until the fuel injectiondetermination logic block 56 does not detect any discernable amount offuel injection by the corresponding one of the fuel injectors 24 ₁-24_(N). In this embodiment, the most recently commanded on-time value thatresulted in detection of a discernable amount of injected fuel by thecurrently commanded (e.g., Kth) one of the fuel injectors 24 ₁-24 _(N)is the critical on-time, COT, for that injector. As another example, thealgorithm 54 may be modified to implement a conventional “hunting”technique in which on-time values, OT, on either side, or on both sides,of an expected critical on-time value, COT, are used and which is/arethen incrementally advanced toward the expected critical on-time value,COT, until a satisfactory value of the critical on-time value, COT, isdetermined. These and any other conventional techniques for modifyingand/or selecting on-time command values, OT, to determine correspondingcritical on-time values, COT, are contemplated by this disclosure.

Referring now to FIG. 5, a plot of rail pressure, RP, over a number ofconsecutive engine cycles is shown that conceptually illustrates some ofthe features of the algorithm 54 illustrated in FIGS. 4A and 4B. Therail pressure plot of FIG. 5 illustrates the response of a single one ofthe fuel injectors 24 ₁-24 _(N) to three different constant on-timevalues, OT, under vehicle motoring conditions, i.e., RQF equals zero,corresponding to zero requested fueling, and with the fuel inletmetering value 16 closed so that the fuel pump 18 cannot supplyadditional fuel from the fuel source 12 to the fuel accumulator or rail20. The rail pressure waveform 120 represents the rail pressure responsewhen the commanded on-time, OT, for all fuel injectors 24 ₁-24 _(N) iszero, and therefore represents decreasing rail pressure due to theparasitic leakage of fuel from all of the fuel injectors 24 ₁-24 _(N)during non-fuel injection operation. The rail pressure waveform 122represents a rail pressure response to a first commanded on-time, OTthat results in significant fuel injection into a corresponding one ofthe cylinders 26 ₁-26 _(N), and therefore represents the combination ofinjected fuel and parasitic fuel leakage. The rail pressure waveform 124represents a rail pressure response to a commanded on-time, OT, that isgreater than the commanded on-time, OT, that produced the waveform 122,and therefore also represents decreasing rail pressure due tocorresponding injected fuel quantities and parasitic fuel leakage. Thewave forms 120, 122, 124 of FIG. 5 illustrate that the decreasing railpressure under the stated conditions are substantially linear for bothinjected fuel quantities and for parasitic leakage. The fuel injectiondetermination logic block 56 of FIG. 3 is configured, as will bedescribed in greater detail hereinafter, to process the rail pressureand tooth samples, RP_(i) and TOOTH_(i) respectively, to determinecorresponding rail pressure drop values resulting from fuel injectionand from parasitic leakage, and to then determine from this informationwhether the corresponding one of the fuel injectors 24 ₁-24 _(N) has orhas not injected a discernable amount or quantity of fuel into acorresponding one of the cylinders 26 ₁-26 _(N).

Referring now to FIG. 6, one illustrative embodiment of the fuelinjection determination logic block 56 of FIG. 3 is shown. In theillustrated embodiment, the fuel injection determination logic block 56includes a rail pressure processing logic block 130 receiving as inputsthe rail pressure and engine speed gear tooth sample values, RP_(i) andTOOTH_(i) respectively, as well as the engine speed signal, ES. The railpressure processing logic block 130 is operable to process these inputvalues, and produce as outputs a rail pressure drop value, RPD, thatcorresponds to the drop in rail pressure, RP, due to fuel injection by aselected one of the fuel injections 24 ₁-24 _(N) during a single enginecycle, a parasitic leakage drop value, PLD, that corresponds to the dropin rail pressure over the single engine cycle when fuel is not beinginjected by any of the fuel injectors 24 ₁-24 _(N), and a mean railpressure value, RP_(M), that corresponds to a mean or average railpressure over the single engine cycle. The RPD, PLD and RP_(M) valuesproduced by the rail pressure processing logic block 130 are provided asinputs to an inject/no-inject determination logic block 132. Theinject/no-inject determination logic block 132 is operable to processthese input values and produce as an output an inject/no-inject value(I/I′), which is indicative of whether a discernable amount of fuel hasbeen injected by the selected one of the fuel injectors 24 ₁-24 _(N)into a corresponding one of the cylinders 26 ₁-26 _(N).

Referring now to FIG. 7, one illustrative embodiment of the railpressure processing logic 130 of FIG. 6 is shown. In the illustratedembodiment, the rail pressure processing logic block 130 includes twofilter blocks 140 and 142, as shown by dashed-line representation inFIG. 7. In the illustrated embodiment, the filters 140 and 142 areidentical with the exception of the filter coefficients blocks 144 and158, and are each provided in the form of first-order Savitzky-Golay(SG) filters, although it will be understood that the filters 140 and142 need not be identical with the exception of filter coefficients, andthat either filter 140 or 142 may alternatively be provided in the formof one or more other conventional filters. In the illustratedembodiment, the SG filters are conventional in structure, but areimplemented in an unconventional manner that fits linear trends toframes each consisting of a single engine cycle. Illustratively, therail pressure processing logic block 130 of FIG. 7 operates on eachtooth, TOOTH_(i), of the engine cycle for the selected one of the fuelinjectors 24 ₁-24 _(N) and produces RPD and PLD values once per enginecycle.

In the embodiment illustrated in FIG. 7, the filter 140 includes acycle-end filter coefficient (CEFC) block 144 that contains a number offilter coefficients for the cycle-end filter 140. In one embodiment, theCEFC block 144 is an array that holds 120 cycle-end filter coefficients.In this embodiment, the gear or wheel that rotates synchronously withthe engine crank shaft, and from which the engine position values, EP,are determined, has 120 teeth. Alternatively, the memory block 144 maybe sized to store any number of cycle-end filter coefficients, and insuch embodiments the size of the memory block 144 will generally takeinto account the number of teeth present on the engine speed/positiongear or wheel. In any case, the output of the block 144 is provided toone input of a function block 146 having another input that receives thetooth sample values, TOOTH_(i). The function block 146 is operable toselect one of the number of cycle-end filter coefficients, CEFC, basedon the current tooth number, TOOTH_(i), and to produce the selected oneof the number of cycle-end filter coefficients, CEFC, at the output ofthe function block 146. Thus, for example, if TOOTH_(i) corresponds totooth number 45, the function block 146 produces as its output the45^(th) cycle-end filter coefficient. In any case, the output of thefunction block 146 is provided to one input of a multiplication block148 having another input receiving the rail pressure sample values,RP_(i). The output of the multiplication block 148 is provided to oneinput of a summation node 150 having another input receiving the outputof a delayed block 156. The output of the summation node 150 is appliedto a “false” input of a true/false block 152 having a “true” inputreceiving the value zero stored in a memory block 154. The toothsamples, TOOTH_(i), are also provided to one input of an “equals” block155 having another input receiving a value corresponding to the totalnumber of teeth, e.g., 120, from a memory block 153. The output of theequal block 155 is provided to the control input of the true/false block152. The output of the equal block 155 is thus a “1” or “true” only whenthe value of TOOTH_(i) is equal to the last tooth of the gear or tonewheel of the engine speed and position sensor 38. The output of thetrue/false block 152 is provided to the input of a delay block 156, tothe input of another delay block 160, and to a subtractive input of asummation node 164. The delay block 156 is a one-tooth delay block, sothat the output of the delay block 156 changes with each tooth value,TOOTH_(i). The delay block 160, on the other hand, is an engine cycledelay block, so that the output of the delay block 160 changes once perengine cycle.

In the illustrated embodiment, the filter 142 is identical to the filter140 just described, with the exception that the cycle-end filtercoefficient block 144 is replaced in the filter 142 with a cycle-startfilter coefficient block 158 that holds a number, e.g., 120, of acycle-start or cycle-begin filter coefficients. The output of thetrue/false block 152 of the filter 142 is provided to a subtractiveinput of a summation node 162 having an additive input receiving theoutput of the delay block 160, to an additive input of the summationnode 164 and also to an input of a delay block 156. The output of thesummation node 162 is the rail pressure drop value, RPD. The output ofthe summation node 164 is provided to one input of a multiplicationblock 166 having another input that receives the output of a saturationblock 168. The input of the saturation block 168 is the engine speed,ES. The output of the multiplication block 166 is provided to the inputof a conversion block 170 that is illustratively operable to convertpressure units of bar/cycle to bar/seconds. In any case, the output ofthe conversion block 170 is the parasitic leakage drop value, PLD.

The rail pressure sample values, RP_(i), are also provided to anadditive input of a summation node 172 having another additive inputthat receives the output of a delay block 174. The output of thesummation node 172 is provided as an input to the delay block 174 andalso as one input to a division block 176 having another input receivinga value corresponding to the total number of teeth on the gear or tonewheel of the engine speed and position sensor 38, e.g., 120. The outputof the division block 176 is the mean rail pressure, RP_(M), and is inthe illustrated embodiment the algebraic average of the sum of the railpressure sample values, RP_(i).

Referring now to FIG. 8, a plot of rail pressure vs. engine crank angle180 is shown illustrating operation of the rail pressure processinglogic block 130 of FIG. 7. In FIG. 8, the plot 180 represents the railpressure, RP, over a single engine cycle, e.g., 720 crank angle degrees,during which a selected one of the fuel injectors 24 ₁-24 _(N) iscommanded to inject an amount of fuel into a corresponding one of thecylinders 26 ₁-26 _(N). As described hereinabove with respect to step 86of FIG. 4A, the beginning or start of an engine cycle corresponds to thedetection of a specified one of the teeth on a gear or tone wheel thatis rotating synchronously with the engine crank shaft, and is differentfor each of the number of cylinders 26 _(i)-26 _(N) and theircorresponding fuel injectors 24 ₁-24 _(N). Illustratively, the start ofan engine cycle relative to any of the number of cylinders 26 _(i)-26_(N) generally corresponds to the so-called top-dead-center (TDC)position of the corresponding piston within the cylinder. With the startof an engine cycle for each of the cylinders 26 _(i)-26 _(N) so defined,the fuel injection event for each such cylinder occurs at the end of theengine cycle for each cylinder. Thus, the plot 180 of FIG. 8 representsthe rail pressure, RP, over a single engine cycle for any one of thefuel injectors 24 ₁-24 _(N) that has been commanded to inject an amountof fuel into a corresponding one of the cylinders 26 ₁-26 _(N), whereinthe engine cycle for any of the corresponding cylinders 26 _(i)-26 _(N)is understood to begin at the TDC for that cylinder.

The filter 142 of FIG. 7 is configured to detect the rail pressure, RP,at the beginning or start of any engine cycle, and the output of thetrue/false block 152 of the filter 142, i.e., the value BEG, for theselected one of the fuel injectors 24 ₁-24 _(N) over its correspondingengine cycle thus corresponds to the point 184 on the plot of FIG. 8.The filter 140 of FIG. 7 is similarly configured to detect the railpressure, RP, near the end of any engine cycle at the time that theselected one of the fuel injectors 24 ₁-24 _(N) is activated to injectfuel into the engine 28, and the output of the true/false block 152 ofthe filter 140, i.e., the value END, for the selected one of the fuelinjectors 24 ₁-24 _(N) over its corresponding engine cycle thuscorresponds to the point 186 of the plot 180 of FIG. 8. The output ofthe summation node 164 at the end of any engine cycle accordinglycorresponds to the parasitic leakage drop value, PLD, prior to furtherprocessing by the multiplication block 166 and by the conversion block170. The output of the true/false block 152 of the filter 142, i.e., thevalue BEG, for the next engine cycle corresponds to the point 188 on theplot of FIG. 8, which also defines the rail pressure, RP, at the end offuel injection during the previous engine cycle. The end of the previousengine cycle, in the illustrated embodiment, coincides with thedeactivation of the selected one of the fuel injectors 24 ₁-24 _(N) tothereby stop fuel injection into the engine 28. Thus the point 188 onthe plot of FIG. 8 thus corresponds to the value of the rail pressurewhen the selected one of the fuel injectors 24 ₁-24 _(N) is deactivatedfollowing activation thereof. The additive input of the summation node160 is a one engine-cycle delay of the output of the filter 140 and thuscorresponds to the point 186 of the plot 180 for the previous enginecycle. The subtractive input of the summation node 160 corresponds tothe point 188 of the plot 180 for the next engine cycle, and thedifference between the rail pressure values 186 and 188 accordinglyrepresents the rail pressure drop, RPD, due to the injection of fuelinto the cylinder of the selected one of the fuel injectors 24 ₁-24_(N). Illustratively, the rail pressure drop values, RPD, and theparasitic leakage drop values, PLD, are both stored in the memory 32.

Referring now to FIG. 9, one illustrative embodiment of theinject/no-inject determination logic block of 132 of FIG. 6 is shown. Inthe illustrated embodiment, the mean rail pressure values, RP_(M), therail pressure drop value, RPD, and the parasitic leakage value, PLV, areall provided as inputs to an inject function block 190 and to an injectnot function block 194. The output of the inject function block 190 isprovided to one input of a “greater than” block 192 having another inputreceiving the output of the inject not function block 192. The output ofthe “greater than” block 192 is the I/I′ value produced by the fuelinjection determination logic block 56 of FIG. 6.

The inject and inject not function blocks 190 and 192 operate toclassify the rail pressure drop, RPD, as a fuel injection or a non-fuelinjection event using a statistical pattern recognition technique basedon discriminant analysis. The discriminant analysis technique classifiesthe two possible patterns, i.e., inject and inject not, in a manner thatminimizes misclassification in a statistical sense. Training data foreach class, i.e., inject and inject not, is processed to determinediscriminant functions that describe the particular class. In oneillustrative embodiment, for example, in which the data is normallydistributed, the following discriminant function is used:

g _(i)(x)=−(x−μ _(i))^(T) S _(i) ⁻¹(x−μ _(i))−ln [det(S _(i))]  (1),

where x is a 1×3 array containing the data RP_(M), RPD and PLD, μ_(i) isa 1×3 array of mean values of the training data set, S_(i) is a 3×3sample covariance matrix for the particular class, i.e., inject andinject not, having values that are based on the training data. Equation(1) is illustratively used as the inject function in the block 190 andalso as the inject not function in the block 192 where the data array xis provided to the input IN and g_(i)(x) is the output 1. The values ofthe mean value array μ_(i) and of the sample covariance matrix, S_(i),are different for each block 190 and 192 as each are generated usingdifferent training data. In any case, the discriminant functions used inthe function blocks 190 and 191, together with the “greater than” block192, are operable to classify the rail pressure drop events, RPD, ofeach engine cycle as an inject event, i.e., fuel has been injected, oran inject not event, i.e., fuel has not been injected. Morespecifically, the inject function block 190 uses the discriminantfunction of equation 1 having values of the mean value array μ_(i) andof the sample covariance matrix, S_(i), that were determined usingtraining data specific to detecting injection events, and the injectvalue, I, produced by the function block 190 corresponds to a likelihoodthat the activation of the selected fuel injector, 24 _(K), for theon-time duration, OT, resulted in injection of fuel by the selected fuelinjector, 24 _(K), into a corresponding cylinder, 26 _(K), of the engine28. The inject not function block 192 uses the discriminant function ofequation 1 having values of the mean value array μ_(i) and of the samplecovariance matrix, S_(i), that were determined using training dataspecific to detecting non-injection events, and the inject-not value, I,produced by the function block 192 corresponds to a likelihood that theactivation of the selected fuel injector, 24 _(K), for the on-timeduration, OT, resulted in no discernable amount of injection of fuel bythe selected fuel injector, 24 _(K), into a corresponding cylinder, 26_(K), of the engine 28. The inject/no-inject value, I/I′, produced bythe logic block 132 thus has a value, e.g., “1” or “true,” indicatingthat the selected fuel injector, 24 _(K), injected fuel into acorresponding cylinder, 26 _(K), of the engine 28 in response toactivation of the selected fuel injector, 24 _(K), for the on-timeduration, OT, if the inject value, I, produced by the function block 190is greater than the inject-not value, I′, produced by the function block192. Conversely, the inject/no-inject value, I/I′, produced by the logicblock 132 thus has a value, e.g., “0” or “false,” indicating that theselected fuel injector, 24 _(K), did not inject fuel into acorresponding cylinder, 26 _(K), of the engine 28 in response toactivation of the selected fuel injector, 24 _(K), for the on-timeduration, OT, if the inject value, I, produced by the function block 190is less than or equal to the inject-not value, I′, produced by thefunction block 192.

The inject/no-inject determination logic block of 132 further includes afilter block 196 having an input that receives the parasitic leakagedrop values, PLD, and an output that is provided to one input of a“greater than” block 198. The filter block 196 is illustratively aconventional filter that produces a filtered PLD value over time. Thefiltered value of PLD over time may represent, for example, atime-delayed, time-averaged, peak-detected or other time-filtered PLDvalue. In any case, a second input of the “greater than” block 198receives a leakage threshold value, LTH that is stored in a memorylocation 200. The output of the “greater than” block is provided as aninput to a memory location 202 having an excessive parasitic leakagevalue, EPL, stored therein. Illustratively, the default value of EPL iszero, but if the filtered parasitic leakage drop output of the filterblock 196 becomes greater than the leakage threshold, LTH, the “greaterthan” block 198 sets the excessive parasitic leakage value, EPL, to a“1” or “true,” thereby indicating that an excessive parasitic fuelleakage condition exists. EPL is reset to “0” or “false” when thefiltered parasitic leakage drop output of the filter block 196 drops toor below LTH, and/or by manually resetting the EPL value in the memorylocation 202.

Referring now to FIG. 10, a plot 210 of injected fuel quantity(mg/stroke, arbitrary scale) vs. injector on-time (milliseconds,arbitrary scale) for a single fuel injector is shown illustrating it'scritical on-time. As illustrated in FIG. 10, a discernable amount ofinjected fuel occurs in an on-time region 212 during which the injectedfuel quantity 210 rises above zero. As illustrated by the periodicvertical lines on either side of the critical on-time 212, the maincontrol logic block 54 may use any conventional incrementing,decrementing and/or “hunting” technique to determine the actual criticalon-time 212.

Referring now to FIG. 11, plots 220 and 230 of injected fuel quantity(mg/stroke, arbitrary scale) vs. injector on-time (milliseconds,arbitrary scale) are shown for a normal, i.e., base-line, fuel injector,corresponding to the plot 220, and a failed fuel injector, correspondingto the plot 230. In the illustrated example, the critical on-times forthe two fuel injectors generally exhibit discernibly different on-timevalues. Such differences in critical on-times generally lead tovariations in fueling by the two represented fuel injectors, andmonitoring the critical on-times thus provides a mechanism formonitoring the overall health of the various fuel injectors 24 ₁-24 _(N)and further provides a basis for a mechanism for dynamicallycompensating the commanded injector on-times, OT, of the fuel injectors24 ₁-24 _(N) to ensure that all of the fuel injectors 24 ₁-24 _(N)inject substantially the same amount of fuel.

Referring now to FIG. 12, another illustrative embodiment 50′ of theinjector health determination logic block 50 of FIG. 2 is shown. In theillustrated embodiment, the injector health determination block 50′includes a main control logic block 54′ and a fuel injectiondetermination logic block 56′. The main control logic block 54′ issimilar to the main control logic block 54 illustrated and describedherein with respect to FIG. 3 in that it receives as inputs the enginespeed and position signal, ES/P, the rail pressure signal, RP, therequested fueling value, RQF, and inject/no-inject value, I/I′ that isproduced by the fuel injection determination logic block 56′, and thatit produces as outputs the on-time value, OT, the injectoridentification value, INJ_(K), and the fuel inlet metering value commandvalue, FIVC, the instantaneous rail pressure value, RP_(i), and acorresponding individual tooth number, TOOTH_(i). The main control logicblock 54′ of FIG. 12 further produces as outputs an engine cycle value,ECYC, which is a count value that corresponds to the current number ofengine cycles for which a selected one of the fuel injectors 24 ₁-24_(N) has been commanded to inject fuel into a corresponding one of thecylinders 26 _(i)-26 _(N), and a VLNGTH value that corresponds to apredetermined number of engine cycles for which a selected one of thefuel injectors 24 ₁-24 _(N) will be commanded to inject fuel into acorresponding one of the cylinders 26 _(i)-26 _(N). The fuel injectiondetermination logic block 56′ is likewise similar to the fuel injectiondetermination logic block 56 of FIG. 3 in that is receives as inputs theengine speed value, ES, which is taken from the engine speed andposition signal, ES/P, the instantaneous rail pressure value, RP_(i),produced by the main control logic block 54′, and the correspondingindividual tooth number, TOOTH_(i), that is produced by the main controllogic block 54′, and produces as an output the I/I′ value that isprovided to the main control logic block 54′. The fuel injectiondetermination logic block 56′ further receives as inputs from the mainlogic control logic block 54′ the ECYC and VLNGTH values just described.

Referring now to FIG. 13, a flow chart of one illustrative embodiment ofa software algorithm representing a portion of the main control logicblock 54′ of FIG. 12 is shown. In the illustrated embodiment, thesoftware algorithm of FIG. 13 utilizes the portion of the softwarealgorithm 54 illustrated and described hereinabove with respect to FIG.4A. The portion of the software algorithm 54 illustrated in FIG. 4A andthe software algorithm illustrated in FIG. 13 together form a softwarealgorithm 54′ that defines the illustrative embodiment of the maincontrol logic block 54′. The software algorithm 54′ may illustrativelybe stored in the memory unit 32 in the form of instructions that areexecutable by the control circuit 30 to control the fuel system of FIG.1 as will be described hereinafter.

The injector health determination logic block 50′ of FIG. 12 generallydiffers from the injector health determination block 50 of FIG. 3 inthat the injector health determination block 50′ includes additionallogic that evaluates the Inject/No-Inject values, I/I′, produced by theInject/No-Inject determination logic block 132 in response to a constantinjector on-time command (OT) over a plurality of engine cycles todetermine whether a discernable amount of fuel has been injected by aselected one of the fuel injectors 24 ₁-24 _(N) into a corresponding oneof the number of cylinders 26 _(i)-26 _(N) of the engine 28. In thisregard, step 90 of FIG. 4A advances, in the embodiment illustrated inFIG. 13, to step 250 where the main control logic block 54′ is operableto determine from the current engine position, EP, whether the currentengine cycle is complete. If not, execution of the algorithm 54′ loopsback to step 86. If, on the other hand, the main control logic block 54′determines at step 250 that the current engine cycle is complete, thealgorithm 54′ advances to step 252 where the main control logic block54′ is operable to increment an engine cycle counter, ECYC, by one.Prior to execution of the algorithm 54′, ECYC will be set to zero aswill be described below.

Following step 252, execution of the algorithm 54′ advances to step 254where the main control logic block 54′ is operable to determine whetherthe fuel injection determination logic 56′ has detected discernable fuelinjection, i.e., a discernable amount of fuel injected, by the currentlyselected (Kth) one of the fuel injectors 24 ₁-24 _(N). One illustrativeembodiment of the fuel injection determination logic 56′ that isoperable to execute step 254 will be described in detail hereinafterwith respect to FIGS. 14 and 15. If, at step 254, the fuel injectiondetermination logic 56′ has not detected discernable fuel injection,execution of the algorithm 54′ advances to step 256 where the controlcircuit 30 is operable to determine whether the currently commandedon-time, OT, for the Kth one of the fuel injectors 24 ₁-24 _(N) has beencommanded for a predetermined number of engine cycles, VLNGTH. In theillustrated embodiment, VLNGTH corresponds to the total number of enginecycles over which the fuel injection determination logic block 56′ maydetect no discernable fuel injection before changing, e.g.,incrementing, the commanded on-time value, OT. The value of VLNGTH isarbitrary, and may be programmed in the memory unit 32. In oneillustrative embodiment, for example, VLNGTH may vary between 1 and 100,although other values of VLNGTH are contemplated.

In any case, if the main control logic block 54′ determines at step 256that the currently commanded on-time, OT, for the Kth one of the fuelinjectors 24 ₁-24 _(N) has not been commanded for a VLNGTH enginecycles, the algorithm 54′ loops back to step 86 of FIG. 4A. If, on theother hand, the main control logic block 54′ determines at step 256 thatthe currently commanded on-time, OT, for the Kth one of the fuelinjectors 24 ₁-24 _(N) has been commanded for a VLNGTH engine cycles,the algorithm 54′ advances to step 258 where the control circuit 30 isoperable to modify the currently commanded on-time value, OT, e.g., byincrementing OT by an increment value, INC, as described hereinaboverespect to step 98 of FIG. 4B. Alternatively, the control circuit 30 maybe operable at step 258 to modify the currently commanded on-time, OT,using any of the alternative techniques described hereinabove withrespect to FIG. 4B. In any case, execution of the algorithm 54′ loopsfrom step 258 back to step 80 of FIG. 4A to monitor the current engineposition value, EP.

If, at step 254, the fuel injection determination logic 56′ has detecteddiscernable fuel injection, the algorithm advances to step 260 where themain control logic block 54′ is operable to set the critical on-timevalue, COT_(K), for the Kth one of the fuel injectors 24 ₁-24 _(N) tothe value of the currently commanded on-time, OT, and to store thecritical on-time value, COT_(K), along with the injector identifier, K,in the memory unit 32, as described hereinabove with respect to step 96of FIG. 4B. Following step 260, the main control logic block 54′ isoperable at step 262 to determine whether critical on-time values, COT,have been determined for all of the injectors 24 ₁-24 _(N). If not, thealgorithm 54′ advances to step 264 where the main control logic block54′ is operable to select a new injector K from the remaining ones ofthe injector 24 ₁-24 _(N) for which a critical on-time value, COT, hasnot been determined. From step 264, the algorithm 54′ loops back to step80 of FIG. 4A. If, at step 262, the main control logic block 54′determines that critical on-time values, COT, have been determined forall of the injectors 24 ₁-24 _(N), the algorithm 54′ advances to step266 where the main control logic block 54′ is operable to produce a fuelinlet metering valve command value, FIVC, that corresponds to an openfuel inlet metering valve 16. The fueling logic block 50 is responsiveto the fuel inlet metering valve command value, FIVC, produced by theinjector health determination logic block 50′ to command the fuel inletmetering valve 16 to an open position and to resume fuel pump commandsto a fuel pump 18. The algorithm 54′ advances from step 266 to step 268where the main control logic block 54′ is operable to reset the enginecycle counter, ECYC, e.g., by setting ECYC to zero. The algorithm 54′advances from step 268 to step 270 where execution of the algorithm 54′ends.

Referring now to FIG. 14, one illustrative embodiment of the fuelinjection determination logic block 56′ of FIG. 12 is shown. In theillustrated embodiment, the fuel injection determination logic block 56′includes the rail pressure determination logic block 130 illustrated anddescribed hereinabove with respect to FIGS. 6 and 7, and also theInject/No-Inject determination logic block 132 illustrated and describedhereinabove with respect to FIGS. 6 and 9. The rail pressuredetermination logic block 130 is operable, as described hereinabove, toprocess rail pressure samples in a manner that produces rail pressuredrop values that correspond to fuel injection events and to fuel leakageduring non-injection periods during each engine cycle. TheInject/No-Inject determination logic block 132 is operable, as describedhereinabove, to process the rail pressure drop values in a manner thatproduces an Inject/No-Inject value that corresponds to a determinationof whether a discernable amount of fuel was injected by the currentlyselected (Kth) one of the fuel injectors 24 ₁-24 _(N) during the currentengine cycle. To emphasize that the Inject/No-Inject value produce bythe Inject/No-Inject determination logic block 56′ is a value that isdetermined and produced each engine cycle, the Inject/No-Inject outputof the Inject/No-Inject determination logic block 132 is labeledI/I′_(EC) in FIG. 14.

The fuel injection determination logic block 56′ also includes anInject/No-Inject (I/I′) voting logic block 280 that receives the enginecycle count value, ECYC, the total engine cycle value, VLNGTH, from themain control logic block 54′, and the per-engine cycle Inject/No-Injectvalue, I/I′_(EC), from the Inject/No-Inject determination logic block132. The I/I′ voting logic block 280 is generally operable, as brieflydescribed above, to evaluate the per-engine cycle Inject/No-Injectvalues, I/I′_(EC), over a number of engine cycles, e.g., VLNGTH enginecycles, and to produce the Inject/No-Inject value, I/I′, based on thisevaluation. Generally, I/I′ will have one logic value, e.g., “1” orlogic high, if the I/I′ voting logic block 280 determines over thenumber of engine cycles that a discernable amount of fuel injection hasoccurred, and to produce an opposite logic value, e.g., “0” or logiclow, if the I/I′ voting logic block 280 otherwise determined that adiscernable amount of fuel injection has not occurred. It will beunderstood, that these logic states may alternatively be reversed.

Referring now to FIG. 15, one illustrative embodiment of the I/I′ votinglogic block 280 forming part of the fuel injection determination logicblock 56′ of FIG. 14 is shown. In the illustrated embodiment, the I/I′voting logic block 280 includes a “less than” logic block 282 having oneinput receiving the value “2” stored in a storage location 284 of thememory unit 32, and having another input receiving the engine cyclecount value, ECYC. The output of the “less than” block 282 is providedas one input to an AND logic block 286 having another input thatreceives the output of a “greater than” block 288. The “greater than”block 288 has one input that receives ECYC, and another input thatreceives the output of a delay block 300 having an input that alsoreceives the engine cycle count value, ECYC. The delay block 300illustratively delays the ECYC value by one engine cycle so that the“greater than” block 288 produces a “1” or logic high value as long asthe current value of ECYC is greater that ECYC of the previous enginecycle, and otherwise produces a “0” or logic low value. The “less than”block 282 produces a “1” or logic high value as long as the value storedin the memory location 284, e.g., 2, is less than ECYC, and is otherwisea “0” or logic low value. The AND block 286 thus produces a “1” or logichigh value as long as the current engine cycle is greater than two andECYC is increasing, and otherwise produces a “0” or a logic low value.

The I/I′ voting logic block 280 further includes a summation node 302having one input receiving the output of the AND block 286, and anotherinput receiving the output of a delay block 310. The output of thesummation node 302 is provided to one input of a “less than or equal to”logic block 304 having another input receiving the VLNGTH value. Theoutput of the summation node 302 is also provided to a “true” input of atrue/false block 306 having a “false” input receiving a value, e.g.,zero, stored in a memory location 308. The control input of thetrue/false block 306 receives the output of the “less than or equal to”block 304, and the output of the true/false block 306 is provided to theinput of the delay block 310 and also to one input of a “equals” logicblock 312. Another output of the “equals” block 312 receives the VLNGTHvalue. The delay block 310 is illustratively configured to delay thevalue provided thereby to the summation block by one engine cycle. The“less than or equal to” block 304 is configured to produce a “1” orlogic high value as long as the value produced by the summation node 310is less than or equal to VLNGTH, and otherwise produces a “0” or logiclow value. The logic blocks 302-312 are configured such that the outputof the true/false block 306 represents the count of engine cycles, whenECYC is greater than 2, between 1 and VLNGTH. While this count value isless than VLNGTH, the output of the “equals” block is a “0” or logic lowvalue. However, when the count value at the output of the true/falseblock 306 reaches VLNGTH, the output of the “equals” block 312transitions to a “1” or logic high value.

The output of the AND block 286 is also provided to one input of anotherAND logic block 314 having another input receiving the per-engine cycleInject/No-Inject value, I/I′_(EC), produced by the Inject/No-Injectdetermination logic block 132. The output of the AND block 314 isprovided to one input of a summation node 316 having another inputreceiving the output of a delay block 322. The output of the summationnode 316 is provided to a “true” input of a true/false block 318 havinga “false” input receiving a value, e.g., zero, stored in a memorylocation 320. The control input of the true/false logic block 318 isprovided by the output of the “less than or equal to” block 304. Theoutput of the true/false block 318 is provided as an input to the delayblock 322 and also as an input to a “greater than or equal to” logicblock 324 having another input receiving a pass count value, PC, storedin a memory location 326. The “greater than or equal to” block 324 isoperable to produce a “1” or logic high value if the output of thetrue/false block 318 is greater than the pass count value, PC, and isoperable to otherwise produce a “0” or logic low value. The output ofthe “greater than or equal to” block 324 is provided to one input of anAND logic block 328 having another input receiving the output of the“equals” block 312. The output of the AND block 328 is the Pass/Fail(P/F) output of the I/I′ voting logic block 280. Generally, if the I/I′voting logic block 280 determines that a discernable amount of fuelinjection by the Kth one of the fuel injectors 24 ₁-24 _(N), thePass/Fail output is “Pass” and is otherwise “Fail.” Illustratively, a“Pass” is represented by a logic high value or “1,” and a “Fail” isrepresented by a logic low value or “0,” although the block 280 mayalternatively be configured such that the “Pass” and “Fail” values arerepresented by logic low values and logic high values respectively.

The delay block 322 is illustratively configured to delay the valueprovided thereby to the summation block by one engine cycle. The logicblocks 314-322 are configured such that the output of the true/falseblock 318 is a vote number that represents the count of I/I′_(EC) valuesthat are “1” or logic high. While this vote number or count value isless than PC, the output of the “greater than or equal to” block 324 isa “0” or logic low value, thereby indicating selected fuel injector, 24_(K), did not inject a discernable amount of fuel into the engine 28 inresponse to activation of the selected fuel injector, 24 _(K), for theon-time duration, OT. However, when the vote number of count value atthe output of the true/false block 318 reaches at least the value of PC,the output of the “greater than or equal to” block 324 transitions to a“1” or logic high value, thereby indicating that the selected fuelinjector, 24 _(K), injected fuel into the engine 28 in response toactivation of the selected fuel injector, 24 _(K), for the on-timeduration, OT. Illustratively, the pass count value, PC, is aprogrammable value that represents a count of I/I′_(EC) “1” or logichigh values at or above which the I/I′ voting logic 280 considers adiscernable fuel injection by the currently selected (Kth) one of thefuel injectors 24 ₁-24 _(N) to have occurred. When the output of thetrue/false block 306 reaches the value of VLNGTH, the output of the“equals” block 312 transitions to a “1” or logic high, and the P/F valueproduced by the AND gate 328 when this occurs thus reflects the statusof the comparison of the count value produced by the true/false block318 and PC. Alternatively, the I/I′ voting logic block 280 may beconfigured to produce a logic high or “1” P/F value if the number ofengine cycles that I/I′_(EC) is “1” or a logic high value is greaterthan PC regardless of whether the total number of engine cycles hasreached VLNGTH. Modifications to the I/I′ voting logic block 280 toeffectuate this alternative embodiment would be a mechanical step for askilled artisan. In any case, the I/I′ voting logic block 280 isoperable to count the number of times that the Inject/No-inject valueI/I′_(EC), determined and produced by the Inject/No-Inject determinationlogic block 132 each engine cycle, indicates that discernable fuelinjection by the currently selected (Kth) one of the fuel injectors 24₁-24 _(N) was detected, to compare this count to a programmable countvalue, PC, and to determine that a discernable amount of fuel wasinjected into the engine 28 by the currently selected one of the fuelinjectors 24 ₁-24 _(N) if the count reaches or exceeds PC. In the formercase, the I/I′ voting logic block 280 is operable to carry out thisprocess VLNGTH times, and in the latter case the I/I′ voting logic block280 is operable to carry out this process until the first to occur ofthe count reaching PC or VLNGTH times.

Referring now to FIG. 16, another illustrative embodiment 50″ of theinjector health determination logic block 50 of FIG. 2 is shown. In theillustrated embodiment, the injector health determination block 50″includes a main control logic block 54″ and a fuel injectiondetermination logic block 56″. The main control logic block 54″ issimilar to the main control logic block 54 illustrated and describedherein with respect to FIG. 3 in that it receives as inputs the enginespeed and position signal, ES/P, the rail pressure signal, RP, and therequested fueling value, RQF, and that it produces as outputs theon-time value, OT, the injector identification value, INJ_(K), the fuelinlet metering value command value, FIVC, the instantaneous railpressure value, RP_(i), and a corresponding individual tooth number,TOOTH_(i). The main control logic block 54′ of FIG. 12 further receivesas inputs the rail pressure drop value, RPD, and the parasitic dropvalue, PLD, that are determined by the fuel injection determinationlogic block 56″ as described hereinabove. The fuel injectiondetermination logic block 56″, in this embodiment, need only include therail pressure processing logic block 130, and it therefore does not havean Inject/No-Inject output. Likewise, the main control logic block 54″does not, in this embodiment, include an Inject/No-Inject input.

Referring now to FIG. 17, a flow chart of one illustrative embodiment ofa software algorithm representing a portion of the main control logicblock 54″ of FIG. 16 is shown. In the illustrated embodiment, thesoftware algorithm of FIG. 17 utilizes the portion of the softwarealgorithm 54 illustrated and described hereinabove with respect to FIG.4A. The portion of the software algorithm 54 illustrated in FIG. 4A andthe software algorithm illustrated in FIG. 17 together form a softwarealgorithm 54A″ that defines the illustrative embodiment of the maincontrol logic block 54″. The software algorithm 54″ may illustrativelybe stored in the memory unit 32 in the form of instructions that areexecutable by the control circuit 30 to control the fuel system of FIG.1 as will be described hereinafter.

The injector health determination logic block 50″ of FIG. 16 generallydiffers from the injector health determination blocks 50 of FIG. 3 and50′ of FIG. 12 in that the injector health determination block 50′″ isconfigured to estimate amounts of fuel injected by each of the fuelinjectors 24 ₁-24 _(N), e.g., in units of mg/stroke or other known unitsof fuel injection, as a function of the rail pressure drop values, RPD,to estimate fuel leakage amounts during non-injection times as afunction of the parasitic leakage drop values, PLD, and to store theseand other associated information in memory. In this regard, step 84 ofFIG. 4A is modified in the embodiment of the algorithm 54A″ such thatthe on-time value, OT, is selected to be an on-time value that willresult in a discernable quantity of fuel being injected by the currentlyselected one of the fuel injectors 24 ₁-24 _(N) into the engine 28.Accordingly, no Inject/No-Inject logic is necessary in this embodimentas at least some discernable amount of fuel will be injected during eachengine cycle.

In the embodiment illustrated in FIG. 17, step 90 of FIG. 4A advances tostep 350 where the main control logic block 54″ is operable to determinefrom the current engine position, EP, whether the current engine cycleis complete. If not, execution of the algorithm 54A″ loops back to step86. If, on the other hand, the main control logic block 54″ determinesat step 350 that the current engine cycle is complete, the algorithm54A″ advances to step 352 where the main control logic block 54″ isoperable to determine an injected fuel quantity, IF, corresponding to anestimate of the amount of fuel injected into the engine 28 by thecurrently selected (Kth) one of the fuel injectors 24 ₁-24 _(N) duringthe current engine cycle, as a function of the rail pressure drop value,RPD, or IF=F(RPD). In the illustrated embodiment in which the flow rateof fuel into the fuel rail (20 or 22) is zero as a result of closing orotherwise disabling the fuel metering valve 16 and/or the fuel pump 18(see step 78 of FIG. 4A) and in which the rail pressure drop value, RPD,represents the drop in rail pressure attributable to the fuel injectionevent, the main control logic block 54″ is operable to execute step 352by computing the estimate of the injected fuel quantity, IF, accordingto the equation IF=(V*RPD)/B, where V=the internal volume of the fuelrail (20 or 22), RPD is the rail pressure drop value for the currentengine cycle, and B is the bulk modulus of the fuel drawn from the fuelsource 12. In one embodiment, V and B are known values, although thisdisclosure contemplates that B may be determined periodically as afunction of one or more known and/or measured characteristics of thefuel and/or fuel system. Alternatively, the injected fuel quantity, IF,may be estimated at step 352 according to one or more other knownfunctions of RPD.

The algorithm 54A″ advances from step 352 to step 354 where the maincontrol logic block 54″ is operable to determine a fuel leakagequantity, FL, corresponding to an estimate of the amount of fuel leakagefrom the fuel rail (20 or 22), e.g., back to the fuel source 12, by thecurrently selected (Kth) one of the fuel injectors 24 ₁-24 _(N) duringthe current engine cycle, as a function of the parasitic leakage dropvalue, PLD, or FL=F(PLD). In the illustrated embodiment in which theflow rate of fuel into the fuel rail (20 or 22) is zero as a result ofclosing or otherwise disabling the fuel metering valve 16 and/or thefuel pump 18 (see step 78 of FIG. 4A) and in which the parasitic leakagedrop value, PLD, represents the drop in rail pressure attributable toall of the fuel injectors during non-fuel injection times, the maincontrol logic block 54″ is operable to execute step 354 by computing theestimate of the fuel leakage quantity, FL, according to the equationFL=(V/B)*(PLD−PLD₀), where V=the internal volume of the fuel rail (20 or22), B is the bulk modulus of the fuel drawn from the fuel source 12,PLD is the rail pressure drop value for the current engine cycle, andPLD₀ is the parasitic leakage drop value when none of the fuel injectors24 ₁-24 _(N) are commanded, i.e., when OT=0 for each of the fuelinjectors 24 ₁-24 _(N). In one embodiment, V and B are known values,although this disclosure contemplates that B may be determinedperiodically as a function of one or more known and/or measuredcharacteristics of the fuel and/or fuel system. Referring again to FIG.5, the rail pressure characteristic 120 corresponds to the drop in fuelrail pressure, RP, when none of the fuel injectors 24 ₁-24 _(N) arecommanded, i.e., OT=0 for all of the fuel injectors 24 ₁-24 _(N).Accordingly, the parasitic fuel leakage for the currently commanded oneof the number of fuel injectors 24 ₁-24 _(N) corresponds to theparasitic leakage drop, PLD, less the parasitic leakage drop, PLD₀, whennone of the fuel injectors 24 ₁-24 _(N) are commanded. The algorithmillustrated in FIG. 4A may therefore include an additional step, e.g.,between steps 78 and 80, where PLD₀ is determined. Inclusion of such astep would be a mechanical step for a skilled artisan. In alternativeembodiments, the fuel leakage quantity, FL, may be estimated at step 354according to one or more other known functions of PLD.

Following step 354, execution of the algorithm 54A″ advances to step 356where the main control logic block 54″ is operable to store in memory 32the injected fuel and/or fuel leakage quantity values, IF and FLrespectively, along with other information relating to the currentlycommanded one of the fuel injectors 24 ₁-24 _(N), e.g., injectoridentifier, K, and/or commanded on-time, OT. Thereafter at step 358, themain control logic block 54″ is operable to determine whether injectedfuel quantity values, IF, (and/or parasitic fuel leakage quantityvalues, FL) have been determined for all of the injectors 24 ₁-24 _(N).If not, the algorithm 54A″ advances to step 360 where the main controllogic block 54″ is operable to select a new injector K from theremaining ones of the injectors 24 ₁-24 _(N) for which an injected fuelquantity value, IF, (and/or parasitic fuel leakage quantity value, FL)has note been determined. From step 360, the algorithm 54A″ loops backto step 80 of FIG. 4A. If, at step 360, the main control logic block 54″determines that injected fuel quantity values, IF, (and/or parasiticfuel leakage quantity values, FL) have been determined for all of theinjectors 24 ₁-24 _(N), the algorithm 54A″ advances to step 362 wherethe main control logic block 54″ is operable to produce a fuel inletmetering valve command value, FIVC, that corresponds to an open fuelinlet metering valve 16. The fueling logic block 50 is responsive to thefuel inlet metering valve command value, FIVC, produced by the injectorhealth determination logic block to command the fuel inlet meteringvalve 16 to an open position and to resume fuel pump commands to a fuelpump 18. The algorithm 54A″ advances from step 362 to step 364 where thealgorithm 54A″ ends.

Referring now to FIG. 18, a flow chart of another illustrativeembodiment of a software algorithm representing a portion of the maincontrol logic block 54″ of FIG. 16 is shown. In the illustratedembodiment, the software algorithm of FIG. 18 utilizes the portion ofthe software algorithm 54 illustrated and described hereinabove withrespect to FIG. 4A. The portion of the software algorithm 54 illustratedin FIG. 4A and the software algorithm illustrated in FIG. 18 togetherform a software algorithm 54B″ that defines another illustrativeembodiment of the main control logic block 54″. The software algorithm54B″ may illustratively be stored in the memory unit 32 in the form ofinstructions that are executable by the control circuit 30 to controlthe fuel system of FIG. 1 as will be described hereinafter.

The algorithm 54B″ generally differs from the algorithm 54A″ in that theinjected fuel quantity values, IF, and the parasitic fuel leakagevalues, FL, are determined for each of the number of fuel injectors 24₁-24 _(N) as the averages of IF and FL values determined over aplurality of engine cycles in which the injector on-time command, OT, isheld constant. In this regard, step 90 of FIG. 4A advances to step 400where the main control logic block 54″ is operable to determine from thecurrent engine position, EP, whether the current engine cycle iscomplete. If not, execution of the algorithm 54B″ loops back to step 86.If, on the other hand, the main control logic block 54″ determines atstep 400 that the current engine cycle is complete, the algorithm 54B″advances to step 402 where the main control logic block 54″ is operableto determine for the current engine cycle, m, the injected fuelquantity, IF_(m), and/or the parasitic fuel leakage quantity, FL_(m),according to any of the techniques described hereinabove with respect toFIG. 17. Thereafter at step 404, the main control logic block 54″ isoperable to determine whether the current value of an engine cyclecounter, CYCT, has reached a predefined, e.g., programmed, value, L,that represents a total number of engine cycles over which IF and/or FLfor the currently selected one (Kth) of the fuel injectors 24 ₁-24 _(N)is to be determined. The value L may be set to any positive integervalue. Initial values of CYCT and m will illustratively bepre-programmed, and may be reset to their initial values by a subsequentstep in the algorithm 54B″ as will be described hereinafter.

In any case, if the main control logic block 54″ determines at step 404that the engine cycle counter, CYCT, has not yet reached the value L,the algorithm 54B″ advances to step 406 where the main control logicblock 54″ is operable to increment CYCT and m, e.g., by the value 1.Thereafter, the algorithm 54B″ loops back to step 80 (FIG. 4A). If, atstep 404, the main control logic block 54″ determines that the enginecycle counter, CYCT, has reached the value L, algorithm executionadvances to step 408 where the main control logic block 54″ is operableto determine IF, corresponding to an estimate of the amount of fuelinjected into the engine 28 by the currently selected (Kth) one of thefuel injectors 24 ₁-24 _(N) averaged over L engine cycles, as a functionof the per-engine cycle fuel injection amount values IF_(j). In theillustrated embodiment, for example, the main control logic block 54″ isoperable to compute IF as an algebraic average of the per-engine cyclefuel injection amount values, IF_(j), according to the equationIF=(1/m)*(Σ^(m) _(j=1)IF_(j)). Alternatively, the main control logicblock 54″ may be operable at step 408 to compute IF according to one ormore other known averaging equations and/or functions. Following step408, the main control logic block 54″ is operable to determine FL,corresponding to an estimate of fuel leakage by the currently selected(Kth) one of the fuel injectors 24 ₁-24 _(N) averaged over L enginecycles, as a function of the per-engine cycle fuel leakage valuesFL_(j). In the illustrated embodiment, for example, the main controllogic block 54″ is operable to compute FL as an algebraic average of theper-engine cycle fuel leakage amount values, FL_(j), according to theequation FL=(1/m)*(Σ^(m) _(j=1)FL_(j)). Alternatively, the main controllogic block 54″ may be operable at step 410 to compute FL according toone or more other known averaging equations and/or functions.

Following step 410, execution of the algorithm 54B″ advances to step 412where the main control logic block 54″ is operable to store in memory 32the injected fuel and/or fuel leakage quantity values, IF and FLrespectively, along with other information relating to the currentlycommanded one of the fuel injectors 24 ₁-24 _(N), e.g., injectoridentifier, K, and/or commanded on-time, OT, and to also reset CYCT andm to 1. Thereafter at step 414, the main control logic block 54″ isoperable to determine whether injected fuel quantity values, IF, (and/orparasitic fuel leakage quantity values, FL) have been determined for allof the injectors 24 ₁-24 _(N). If not, the algorithm 54B″ advances tostep 416 where the main control logic block 54″ is operable to select anew injector K from the remaining ones of the injectors 24 ₁-24 _(N) forwhich an injected fuel quantity value, IF, (and/or parasitic fuelleakage quantity value, FL) has not been determined. From step 416, thealgorithm 54B″ loops back to step 80 of FIG. 4A. If, at step 414, themain control logic block 54″ determines that injected fuel quantityvalues, IF, (and/or parasitic fuel leakage quantity values, FL) havebeen determined for all of the injectors 24 ₁-24 _(N), the algorithm54B″ advances to step 418 where the main control logic block 54″ isoperable to produce a fuel inlet metering valve command value, FIVC,that corresponds to an open fuel inlet metering valve 16. The fuelinglogic block 50 is responsive to the fuel inlet metering valve commandvalue, FIVC, produced by the injector health determination logic blockto command the fuel inlet metering valve 16 to an open position and toresume fuel pump commands to a fuel pump 18. The algorithm 54B″ advancesfrom step 418 to step 420 where the algorithm 54B″ ends.

Referring now to FIG. 19, a flowchart is shown of one illustrativeembodiment of a process 500 for adjusting on-times (OT) for one or morefuel injectors 24 ₁-24 _(N) based on the one or more correspondingcritical on-times, COT₁-COT_(N) to correct for changes in the injectorcharacteristics during operation of the fuel system. Illustratively, theprocess 500 is stored in the memory unit 32 of the control circuit 30 inthe form of instructions that are executable by the control circuit 500to adjust the one or more commanded on-times. The process 500 begins atstep 502 where the control circuit 30 selects a Kth one of the fuelinjectors 24 ₁-24 _(N) to inject fuel into a corresponding one of thecylinders 26 ₁-26 _(N) for an on-time duration. The process 500 advancesfrom step 502 to step 504 where the control circuit 30 is operable todetermine an on-time, OT_(K), for the Kth injector. It will beunderstood that steps 502 and 504 will typically be part of aconventional fueling algorithm that is executed by the control circuit30, e.g., by the fueling logic block 52 of FIG. 2, to control fueling ofthe engine 28. The Kth one of the fuel injectors 24 ₁-24 _(N)corresponds, in such cases, to the current one of the fuel injectors 24₁-24 _(N) in the predetermined fueling sequence, e.g., predeterminedsequence of cylinders in which fueling of the engine 30 is carried out,and OT_(K) is the duration of the corresponding injector activationsignal generated by the control circuit 30 at the output FIC_(K).

The process 500 advances from step 504 to step 506 where the controlcircuit 30 is operable to compute an offset value, OFF, as a differencebetween the critical on-time value, COT_(K), for the Kth fuel injector24 _(K) and a reference critical on-time value, COT_(R). The process 500assumes that critical on-time value, COT_(K), for the Kth fuel injector24 _(K) has been previously determined, and that the COT_(K) value isavailable to the process 500. Illustratively, critical on-times for allof the fuel injectors 24 ₁-24 _(N) are determined prior to the executionof the process 500 using any one or more of the processes illustratedand described herein, and critical on-time values, COT₁-COT_(N), foreach of the for each of the corresponding fuel injectors, 24 ₁-24 _(N),are stored in the memory unit 32. At step 506, the control circuit 30 isoperable in this embodiment to determine COT_(K) by retrieving thecritical on-time value for the Kth injector from the memory unit 32. Itwill be understood that COT_(K) may represent the most recently storedCOT_(K) value, an average of a number of stored COT_(K) values, or otherfunction of one or more COT_(K) values. The reference critical on-time,COT_(R), is illustratively a critical on-time value that represents anexpected critical on-time for properly functioning one of the particulartype of fuel injector 24 _(K) being used. Alternatively, COT_(R) mayrepresent a target critical on-time value that may or may not be, orrelate to, the expected critical on-time. In any case, COT_(R) may ormay not be identical for all or some of the fuel injectors 24 ₁-24 _(N).

The process 500 advances from step 506 to step 508 where the controlcircuit 30 is operable to determine a modified, i.e., adjusted, on time,OT_(KM), for the Kth fuel injector, 24 _(K), generally as a function ofthe on-time, OT_(K), for the Kth fuel injector 24 _(K), the criticalon-time, COT_(K), for the Kth fuel injector 24 _(K) and the referencecritical on-time COT_(R), and more specifically as a function of theon-time, OT_(K), for the Kth fuel injector 24 _(K), and the offsetvalue, OFF. In the embodiment illustrated in FIG. 19, for example, thecontrol circuit 30 is operable to execute step 508 by modifying OT_(K)according to the equation OT_(KM)=OT_(K)+OFF, where OT_(KM) representsthe modified or adjusted on-time for the Kth fuel injector 24 _(K).Thus, if COT_(K) is greater than COT_(R), the duration of OT_(KM) willbe greater than that of the on-time, OT_(K), computed at step 504pursuant to the conventional fueling logic 52, and if COT_(K) is lessthan COT_(R), the duration of OT_(KM) will be less than that of theon-time computed at step 504. It will be understood that this disclosurecontemplates that the control circuit 30 may be alternatively configuredat step 508 to modify or adjust the on-time, OT_(K), that was determinedat step 504 as other functions of the offset value, OFF, examples ofwhich include, but should not be limited to, an average of a number ofthe offset values, OFF, or the like.

Following step 508, the control circuit 30 is operable at step 510 toactivate the Kth injector 24 _(K) the modified or adjusted on-time,OT_(KM), to inject fuel into the Kth cylinder 26 _(K) of the engine 28for the duration specified by OT_(KM). Thereafter at step 512, thecontrol circuit 30 is operable to redefine K as the next (Kth) one ofthe fuel injectors 24 ₁-24 _(N) in the fueling sequence. As with steps502 and 504, steps 510 and 512 will typically be part of theconventional fueling algorithm that is executed by the control circuit30, e.g., by the fueling logic block 52 of FIG. 2, to control fueling ofthe engine 28. Activation of the Kth one of the fuel injectors 24 ₁-24_(N) at step 510 is thus carried out in a conventional manner, andselection of the next fuel injector in the fueling sequence at step 512is likewise carried out in a conventional manner. In any case, theprocess 500 loops from step 512 back to step 504 for continual executionof the process 500 to control fueling of the engine 28.

Referring now to FIG. 20, a flowchart is shown of one illustrativeembodiment of a process 550 for adjusting on-times for one or more fuelinjectors based on one or more corresponding injected fuel quantityestimates. Illustratively, the process 550 is stored in the memory unit32 of the control circuit 30 in the form of instructions that areexecutable by the control circuit 500 to adjust the one or morecommanded on-times. The process 550 has several steps in common with theprocess 500 just described. For example, step 552 of the process 550 isidentical to step 502 of the process 500, step 554 of the process 550 isidentical to step 504 of the process 500, step 562 of the process 550 isidentical to step 510 of the process 500 and step 564 of the process 550is identical to step 512 of the process 500. Description of steps 552,554, 562 and 564 of the process 550 will not be repeated here forbrevity.

Step 554 of the process 550 advances to step 556 where the controlcircuit 30 is operable to determine a number, N, of injected fuel values(IF) and corresponding on-time (OT) pairs (IF_(K1), OT_(K1)), . . . ,(IF_(KN), OT_(KN)) for the Kth fuel injector 24 _(K), where N may be anypositive integer. The process 550 assumes that the one or more injectedfuel (IF) and corresponding on-time (OT) pairs have been previouslydetermined, and that they are available to the process 550.Illustratively, injected fuel values, IF, are determined for a number ofdifferent corresponding on-times, OT, for each of the fuel injectors 24₁-24 _(N) prior to the execution of the process 550 using any one ormore of the processes illustrated and described herein, e.g., either ofthe processes illustrated in FIGS. 18 and 19, and such injected fuel andcorresponding on-time pairs are stored in the memory unit 32. Thecontrol circuit 30 is accordingly operable in such embodiments toexecute step 556 by retrieving the number of injected fuel values andcorresponding on-time pairs (IF_(K1), OT_(K1)), . . . , (IF_(KN),OT_(KN)) for the Kth fuel injector 24 _(K) from the memory unit 32.

The number N may vary depending upon a desired implementation of theprocess 550. As one example, N may be one, and the injected fuel valueand corresponding on-time pair may be determined at step 556 byselecting an injected fuel value for the Kth injector 24 _(K) having acorresponding on-time that is equal to, or is near, e.g., close in valueto, the on-time, OT_(K), that was determined by the control circuit 30at step 554. The injected fuel value, IF, having such a correspondingon-time value thus represents an estimate of the actual quantity ofinjected fuel by the Kth fuel injector 24 _(K) when commanded for anon-time of OT_(K). Alternatively, IF may be an average of a number ofsuch injected fuel values for the Kth fuel injector 24 _(K), or mayalternatively still be some other function of one or more such injectedfuel values. As another example, N may be greater than 1, and themultiple injected fuel value and corresponding on-time value pairs maybe determined at step 556 by selecting injected fuel values for the Kthinjector 24 _(K) having corresponding on-times that are less than,greater than, less than and greater than, or otherwise distributedabout, the on-time OT_(K) that was determined by the control circuit 30at step 554. Alternatively, the multiple injected fuel values may eachbe averages of a number of such injected fuel values for the Kth fuelinjector 24 _(K), or may alternatively still be some other function ofone or more such injected fuel values. At least one of the multipleinjected fuel values may have a corresponding on-time value that is nearor equal to the generated on-time OT_(K).

In any case, the process 550 advances from step 556 to step 558 wherethe control circuit 30 is operable to determine a corresponding number,N, of offset values, OFF₁−OFF_(N), for the Kth fuel injector 24 _(K)each as a difference between a different one of the injected fuelvalues, IF_(K1)−IF_(KN), and a corresponding reference injected fuelvalue, IF_(R1)−IF_(RN), such that the N offset values are computed asOFF₁=IF_(K1)−IF_(R1), . . . , OFF_(N)=IF_(KN)−IF_(RN). The referenceinjected fuel values, IF_(R1)-IF_(RN), are illustratively each injectedfuel values that represent an expected injected fuel quantity based onactivation thereof for a corresponding commanded on-time for a properlyfunctioning one of the particular type of fuel injector 24 _(K) beingused. Alternatively, IF_(R1)−IF_(RN), may represent target injected fuelquantity values that may or may not be, or relate to, expected injectedfuel quantities.

The process 550 advances from step 558 to step 560 where the controlcircuit 30 is operable to determine a modified or adjusted on-time,OT_(KM), for the Kth fuel injector 24 _(K) generally as a function ofthe generated on-time, OT_(K), the one or more injected fuel quantities,IF_(K1)−IF_(KN), and the one or more corresponding reference injectedfuel quantities, IF_(R1)−IF_(RN). More specifically, the control circuit30 is operable at step 560 to determine the modified or adjustedon-time, OT_(KM), for the Kth fuel injector, 24 _(K), based on thegenerated on-time, OT_(K), and a function of the one or more offsetvalues, OFF₁−OFF_(N). In the embodiment illustrated in FIG. 20, forexample, the control circuit 30 is operable to execute step 508 bymodifying OT_(K) according to the equation OT_(KM)=OT_(K)+F(OFF₁, . . ., OFF_(N)), where OT_(KM) represents the modified on-time for the Kthfuel injector 24 _(K). Illustratively, the function F(OFF₁, . . . ,OFF_(N)) may represent a mathematical combination of OFF₁, . . . ,OFF_(N), a known function of OFF₁, . . . , OFF_(N), a conventionalstatistical process performed on OFF₁, . . . , OFF_(N), or the like. Inan alternative embodiment, as shown by dashed line representation, step506 of the process 500 may be executed prior to step 560 of the process550 so that the function F(OFF₁, . . . , OFF_(N)) in the computation ofOT_(KM) at step 560 may further include the offset value OFF determinedby step 506 such that the function at step 560 then becomes F(OFF, OFF₁,. . . , OFF_(N)). In any case, it should be apparent that themodification of the on-time, OT_(KM), for the Kth fuel injector 24 _(K)that is computed at step 560 may be based on one or more injected fuelquantities that correspond to previously determined estimates ofinjected fuel quantities by the Kth fuel injector, and may further bebased on an offset value computed as a function of the critical on-time,COT_(K), for the Kth fuel injector 24 _(K).

Following step 560, the process 550 advances to step 562 where thecontrol circuit 30 is operable to activate the Kth injector 24 _(K) themodified on-time, OT_(KM), to inject fuel into the Kth cylinder 26 _(K)of the engine 28 for the duration specified by OT_(KM), as describedhereinabove with respect to step 510 of the process 500. Thereafter atstep 564, the control circuit is operable to redefine K as the next(Kth) one of the fuel injectors 24 ₁-24 _(N) in the fueling sequence, asdescribed hereinabove with respect to step 512 of the process 500.Following step 564, the process 550 loops back to step 554 for continualexecution of the process 550 to control fueling of the engine 28.

While the invention has been illustrated and described in detail in theforegoing drawings and description, the same is to be considered asillustrative and not restrictive in character, it being understood thatonly illustrative embodiments thereof have been shown and described andthat all changes and modifications that come within the spirit of theinvention are desired to be protected.

1. A method of determining a critical on-time for a selected one of aplurality of fuel injectors coupled to a source of fuel via a fuel railof a fuel system for an internal combustion engine, the methodcomprising: disabling fuel flow from the source of fuel to the fuelrail, periodically sampling fuel rail pressure, activating the selectedfuel injector for an on-time duration while inhibiting fuel injection byremaining ones of the plurality of fuel injectors, determining from thefuel rail pressure samples a first pressure drop in the fuel railresulting from activation of the selected fuel injector for the on-timeduration, processing the first pressure drop to determine whether or notthe selected fuel injector injected fuel into the engine in response toactivation for the on-time duration, repeatedly modifying the on-timeduration and then executing the periodically sampling, activating,determining and processing steps until a critical on-time is determinedthat corresponds to a minimum on-time duration to which the selectedfuel injector is responsive to inject a discernable amount of fuel intothe engine.
 2. The method of claim 1 further comprising storing thecritical on-time for the selected fuel injector in a memory unit.
 3. Themethod of claim 1 wherein periodically sampling, activating,determining, processing and repeatedly modifying are carried out forremaining ones of the plurality of fuel injectors to determine acritical on-time for each of the remaining ones of the plurality of fuelinjectors.
 4. The method of claim 1 wherein the on-time duration isinitially selected such that activation of the selected fuel injectorfor the on-time duration does not result in injection of any discernableamount of fuel into the engine, and wherein repeatedly modifying theon-time duration comprises successively incrementing the on-timeduration by an increment value.
 5. The method of claim 1 wherein theon-time duration is initially selected such that activation of theselected fuel injector for the on-time duration results in injection offuel into the engine, and wherein repeatedly modifying the on-timeduration comprises successively decrementing the on-time duration by adecrement value.
 6. The method of claim 1 wherein repeatedly modifyingthe on-time duration comprises selecting on-time durations on eitherside of an expected critical on-time for the selected injector and thenincrementally advancing the on-time duration toward the expectedcritical on-time until the minimum on-time duration is determined. 7.The method of claim 1 wherein each execution of the periodicallysampling, activating, determining and processing steps is carried outover a single engine cycle.
 8. The method of claim 1 further comprising:determining from the fuel rail pressure samples a second pressure dropin the fuel rail pressure resulting from leakage of fuel by the fuelsystem when none of the plurality of fuel injectors is injecting fuelinto the engine, and determining from the fuel pressure samples a meanvalue of the fuel pressure samples, wherein processing the firstpressure drop further comprises processing the first pressure drop, thesecond pressure drop and the mean value of the fuel pressure samples todetermine whether or not the selected fuel injector injected fuel intothe engine in response to activation of the selected fuel injector forthe on-time duration.
 9. The method of claim 8 wherein the processingstep comprises: processing the first pressure drop, the second pressuredrop and the mean value of the fuel pressure using a first discriminantfunction to produce an inject value corresponding to a likelihood thatthe activation of the selected fuel injector for the on-time durationresulted in injection of fuel by the selected fuel injector into theengine, processing the first pressure drop, the second pressure drop andthe mean value of the fuel pressure using a second discriminant functionto produce an inject-not value corresponding to a likelihood that theactivation of the selected fuel injector for the on-time durationresulted in no injection of fuel by the selected fuel injector into theengine, and processing the inject and inject not values to produce aninject/no-inject value, the inject/no-inject value having a valueindicating that the selected fuel injector injected fuel into the enginein response to activation of the selected fuel injector for the on-timeduration if the inject value is greater than the inject-not value, andotherwise having a value indicating that the selected fuel injector didnot inject fuel into the engine in response to activation of theselected fuel injector for the on-time duration.
 10. The method of claim9 wherein each execution of the steps of periodically sampling,activating, determining the first pressure drop, determining the secondpressure drop, determining the mean value of the fuel pressure,processing the first pressure drop, processing the second pressure dropand processing the inject and inject not values is carried out over asingle engine cycle.
 11. The method of claim 8 further comprising:filtering the second pressure drop over time to produce a filteredparasitic leakage value, comparing the filtered parasitic leakage valueto a leakage threshold value, and storing an excessive parasitic leakagevalue, that is indicative of an excessive parasitic leakage condition,in a memory unit in a memory unit if the filtered parasitic leakagevalue is greater than the leakage threshold value.
 12. The method ofclaim 10 further comprising processing a number of inject/no-injectvalues produced over a corresponding number of engine cycles toaccording to a voting process to determine whether or not the selectedfuel injector injected fuel into the engine in response to activation ofthe selected fuel injector for the on-time duration.
 13. The method ofclaim 12 wherein processing the number of inject/no-inject valuescomprises: determining a vote number corresponding to a number of timesover the number of engine cycles that the inject/no-inject valueindicates that the selected fuel injector injected fuel into the enginein response to activation of the selected fuel injector for the on-timeduration, determining that the selected fuel injector injected fuel intothe engine in response to activation of the selected fuel injector forthe on-time duration if the vote number reaches a pass count value, andotherwise determining that the selected fuel injector did not inject adiscernable amount of fuel into the engine in response to activation ofthe selected fuel injector for the on-time duration.
 14. The method ofclaim 12 wherein processing the number of inject/no-inject valuescomprises: determining a vote number corresponding to a number of timesthat the inject/no-inject value indicates that the selected fuelinjector injected fuel into the engine in response to activation of theselected fuel injector for the on-time duration, determining that theselected fuel injector injected fuel into the engine in response toactivation of the selected fuel injector for the on-time duration if thevote number reaches a pass count value before the number of enginecycles reaches an engine cycle count value, and determining that theselected fuel injector did not inject a discernable amount of fuel intothe engine in response to activation of the selected fuel injector forthe on-time duration if the number of engine cycles reaches the enginecycle count value before the vote number reaches the pass count value.15. A system for determining a critical on-time for a selected one of aplurality of fuel injectors in a fuel system for an internal combustionengine, comprising: a fuel inlet metering valve having an inlet fluidlycoupled to a source of fuel, a fuel pump having an inlet coupled to anoutlet of the fuel inlet metering valve, a fuel rail coupled to anoutlet of the fuel pump, a pressure sensor fluidly coupled to the fuelrail and configured to produce a pressure signal indicative of fuelpressure within the fuel rail, a plurality of fuel injectors fluidlycoupled to the fuel rail, and a control circuit including a memoryhaving instructions stored therein that are executable by the controlcircuit to control the fuel inlet metering valve to disable fuel flowfrom the source of fuel to the fuel rail, to periodically sample thepressure signal, to activate the selected fuel injector for an on-timeduration while inhibiting fuel injection by remaining ones of theplurality of fuel injectors, to determine from the pressure signalsamples a first pressure drop in the fuel rail resulting from activationof the selected fuel injector for the on-time duration, to process thefirst pressure drop to determine whether or not the selected fuelinjector injected fuel into the engine in response to activation for theon-time duration, and to repeatedly modify the on-time duration and thenexecute the periodically sampling, activating, determining andprocessing steps until a critical on-time is determined that correspondsto a minimum on-time duration to which the selected fuel injector isresponsive to inject a discernable amount of fuel into the engine. 16.The system of claim 15 wherein the instructions stored in the memoryfurther include instructions that are executable by the control circuitto determine from the pressure signal samples a second pressure drop inthe fuel rail pressure resulting from leakage of fuel by the fuel systemwhen none of the plurality of fuel injectors is injecting fuel into theengine, and to determine from the pressure signal samples a mean valueof the pressure signal samples, wherein the instructions stored in thememory further include instructions that are executable by the controlcircuit to determine whether or not the selected fuel injector injectedfuel into the engine in response to activation for the on-time durationby processing the first pressure drop, the second pressure drop and themean value of the fuel pressure samples to determine whether or not theselected fuel injector injected fuel into the engine in response toactivation of the selected fuel injector for the on-time duration. 17.The system of claim 15 wherein the instructions stored in the memoryfurther include instructions that are executable by the control circuitto determine whether or not the selected fuel injector injected fuelinto the engine in response to activation for the on-time duration byprocessing the first pressure drop, the second pressure drop and themean value of the fuel pressure using a first discriminant function toproduce an inject value corresponding to a likelihood that theactivation of the selected fuel injector for the on-time durationresulted in injection of fuel by the selected fuel injector into theengine, by processing the first pressure drop, the second pressure dropand the mean value of the fuel pressure using a second discriminantfunction to produce an inject-not value corresponding to a likelihoodthat the activation of the selected fuel injector for the on-timeduration resulted in no injection of fuel by the selected fuel injectorinto the engine, and by processing the inject and inject not values toproduce an inject/no-inject value, the inject/no-inject value having avalue indicating that the selected fuel injector injected fuel into theengine in response to activation of the selected fuel injector for theon-time duration if the inject value is greater than the inject-notvalue, and otherwise having a value indicating that the selected fuelinjector did not inject fuel into the engine in response to activationof the selected fuel injector for the on-time duration.
 18. The systemof claim 16 wherein the instructions stored in the memory are executableby the control circuit to produce the inject/no-inject value during asingle engine cycle, and wherein the instructions stored in the memoryfurther include instructions that are executable by the control circuitto process a number of inject/no-inject values produced over acorresponding number of engine cycles to according to a voting processto determine whether or not the selected fuel injector injected fuelinto the engine in response to activation of the selected fuel injectorfor the on-time duration.
 19. The system of claim 18 wherein theinstructions stored in the memory further include instructions that areexecutable by the control circuit to process the number ofinject/no-inject values by determining a vote number corresponding to anumber of times over the number of engine cycles that theinject/no-inject value indicates that the selected fuel injectorinjected fuel into the engine in response to activation of the selectedfuel injector for the on-time duration, by determining that the selectedfuel injector injected fuel into the engine in response to activation ofthe selected fuel injector for the on-time duration if the vote numberreaches a pass count value, and by otherwise determining that theselected fuel injector did not inject a discernable amount of fuel intothe engine in response to activation of the selected fuel injector forthe on-time duration.
 20. The system of claim 18 wherein theinstructions stored in the memory further include instructions that areexecutable by the control circuit to process the number ofinject/no-inject values by determining a vote number corresponding to anumber of times that the inject/no-inject value indicates that theselected fuel injector injected fuel into the engine in response toactivation of the selected fuel injector for the on-time duration, bydetermining that the selected fuel injector injected fuel into theengine in response to activation of the selected fuel injector for theon-time duration if the vote number reaches a pass count value beforethe number of engine cycles reaches an engine cycle count value, and bydetermining that the selected fuel injector did not inject a discernableamount of fuel into the engine in response to activation of the selectedfuel injector for the on-time duration if the number of engine cyclesreaches the engine cycle count value before the vote number reaches thepass count value.
 21. The system of claim 15 wherein the instructionsstored in the memory further include instructions that are executable bythe control circuit to store the critical on-time in the memory.
 22. Thesystem of claim 15 wherein the instructions stored in the memory furtherinclude instructions that are executable by the control circuit todetermine critical on-times for remaining ones of the plurality of fuelinjectors.
 23. The system of claim 15 wherein the instructions stored inthe memory further include instructions that are executable by thecontrol circuit to determine the critical on-time using the pressuresignal sampled over a single engine cycle.